时间:2021-07-01 10:21:17 帮助过:59人阅读
输出'name,city',除了foreach还有什么更方便的办法? foreach($arr as $key=>$value){ if(strpos($num,$key) !== false) { $str.=$value; } }php
$arr = [5=>'name',8=>'age',10=>'city']; $num = '5,10'; $str = ''; //如何查找5,10对应的值,就是
输出'name,city',除了foreach还有什么更方便的办法? foreach($arr as $key=>$value){ if(strpos($num,$key) !== false) { $str.=$value; } }php
$arr = [5=>'name',8=>'age',10=>'city']; $num = '5,10'; $str = ''; //如何查找5,10对应的值,就是
$arr = array(5=>'name',8=>'age',10=>'city');
$num = '5,10';
var_dump(array_intersect_key($arr,array_flip(explode(',',$num))));
//output
array (size=2)
5 => string 'name' (length=4)
10 => string 'city' (length=4)
'name',8=>'age',10=>'city');
$num = '5,10';
$str = array();
$explode = explode(',',$num);
foreach($explode as $key){
if(array_key_exists($key,$arr)){
array_push($str,$arr[$key]);
}
}
echo implode(',',$str);
?>
用array_key_exists判断,楼上已给出代码!
除了楼上给出的分解$num
后通过array_key_exists
在$arr
数组寻找相应的值后在implode
到一起之外。我给出另外一种通过正则替换的实现方式:
$arr = [5=>'name',8=>'age',10=>'city'];
$num = '5,10';
$res = preg_replace_callback(
'/(\d+)/',
function($matches){
global $arr;
return array_key_exists($matches[1], $arr) ? $arr[$matches[1]] : $matches[1];
},
$num
);
echo $num."\n";
echo $res;