栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在PHP中通过多维数组中的key => value搜索

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在PHP中通过多维数组中的key => value搜索

码:

function search($array, $key, $value){    $results = array();    if (is_array($array)) {        if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array;        }        foreach ($array as $subarray) { $results = array_merge($results, search($subarray, $key, $value));        }    }    return $results;}$arr = array(0 => array(id=>1,name=>"cat 1"),  1 => array(id=>2,name=>"cat 2"),  2 => array(id=>3,name=>"cat 1"));print_r(search($arr, 'name', 'cat 1'));

输出:

Array(    [0] => Array        ( [id] => 1 [name] => cat 1        )    [1] => Array        ( [id] => 3 [name] => cat 1        ))

如果效率很重要,则可以编写效率代码,以便所有递归调用将其结果存储在同一临时

$results
数组中,而不是将数组合并在一起,如下所示:

function search($array, $key, $value){    $results = array();    search_r($array, $key, $value, $results);    return $results;}function search_r($array, $key, $value, &$results){    if (!is_array($array)) {        return;    }    if (isset($array[$key]) && $array[$key] == $value) {        $results[] = $array;    }    foreach ($array as $subarray) {        search_r($subarray, $key, $value, $results);    }}

这里的关键是

search_r
通过引用而不是值来获取其第四个参数。“&”号
&
至关重要。

仅供参考:如果您使用的是旧版PHP,则必须在的 调用

search_r
而不是在其声明中指定传递引用部分。也就是说,最后一行变为
search_r($subarray, $key, $value,&$results)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421588.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号