php - 从数组查找key对应的值
巴扎黑
巴扎黑 2017-04-10 15:53:04
[PHP讨论组]
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; } }
巴扎黑
巴扎黑

全部回复(4)
PHP中文网
$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)

巴扎黑
<?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);

?>
PHP中文网

用array_key_exists判断,楼上已给出代码!

ringa_lee

除了楼上给出的分解$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;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号