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对应的值,就是输出'name,city',除了foreach还有什么更方便的办法? foreach($arr as $key=>$value){ if(strpos($num,$key) !== false) { $str.=$value; } }
<?php
$arr = array(5=>'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);
?>
除了楼上给出的分解$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;
2 回答1.3k 阅读✓ 已解决
2 回答824 阅读✓ 已解决
1 回答910 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答882 阅读
1 回答873 阅读
1 回答803 阅读
//output
array (size=2)
5 => string 'name' (length=4)
10 => string 'city' (length=4)