当前位置:Gxlcms > PHP教程 > 从数组查找key对应的值

从数组查找key对应的值

时间:2021-07-01 10:21:17 帮助过:59人阅读

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; } }

$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;

人气教程排行