PHP二维数组根据键值对获取一组数组 (不使用foreach)

发布于 2022-09-05 09:05:20 字数 497 浏览 24 评论 0

$user = array(  
    0 => array(  
        'id'    => 1,  
        'name'  => '张三',  
        'email' => 'zhangsan@sina.com',  
    ),  
    1 => array(  
        'id'    => 2,  
        'name'  => '李四',  
        'email' => 'lisi@163.com',  
    ),  
    2 => array(  
        'id'    => 5,  
        'name'  => '王五',  
        'email' => '10000@qq.com',  
    ),  
    ......  
); 

比如我想获取当id=2时,该数组的全部内容,不使用foreach,在PHP 5.3版本下

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

眼藏柔 2022-09-12 09:05:20
$user = array(  
    0 => array(  
        'id'    => 1,  
        'name'  => '张三',  
        'email' => 'zhangsan@sina.com',  
    ),  
    1 => array(  
        'id'    => 2,  
        'name'  => '李四',  
        'email' => 'lisi@163.com',  
    ),  
    2 => array(  
        'id'    => 5,  
        'name'  => '王五',  
        'email' => '10000@qq.com',  
    )
);
$ids = array_column($user, 'id');
$new_user = array_combine($ids, $user);
var_dump($new_user[2]);
我一直都在从未离去 2022-09-12 09:05:20

用array_filter也可以,但本质上还是循环

$test = array_filter(
    $user,
    function($item){
        if($item['id'] == '2'){
            return true;
        }
    }
);
泪痕残 2022-09-12 09:05:20

不用foreach 还可以用for 和 array_map,但是foreach好像效率更高一点

我的痛♀有谁懂 2022-09-12 09:05:20

大于php4

$arr = array_filter($test,function($val){
    return $val['id'] == 2
})
漆黑的白昼 2022-09-12 09:05:20

如果你能确认每个元素的id都唯一不重复,你可以先用foreach重构这个数组 用id作为这个数组的索引 然后用$arr[$id]的方式在别的地方取值

划一舟意中人 2022-09-12 09:05:20

其实你用的函数也是帮你foreach了,大多数性能不如自己foreach的好

浅沫记忆 2022-09-12 09:05:20

问题问的真的挺low。。。即使你用内置函数实现了,看上去挺干净,没有foreach,没有for
但是请问,不把数组遍历一遍你知道哪个内层数组是id=2的?
看大家还在这里忙着给你写答案,给大家给个赞

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文