为了账号安全,请及时绑定邮箱和手机立即绑定

PHP多维数组值搜索

PHP多维数组值搜索

PHP
慕无忌1623718 2019-06-01 14:08:05
PHP多维数组值搜索我有一个数组,我想在其中搜索uid得到数组的键。实例假设我们有以下二维数组:$userdb = array(     array(         'uid' => '100',         'name' => 'Sandra Shush',         'pic_square' => 'urlof100'     ),     array(         'uid' => '5465',         'name' => 'Stefanie Mcmohn',         'pic_square' => 'urlof100'     ),     array(         'uid' => '40489',         'name' => 'Michael',         'pic_square' => 'urlof40489'     ));函数调用search_by_uid(100)(第一个用户的UID)应该返回0.函数调用search_by_uid(40489)应该回来2.我试着做循环,但是我想要一个更快的执行代码。
查看完整描述

4 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

如果您使用的是(PHP 5>=5.5.0),您不需要编写自己的函数就可以这样做,只需编写这一行就可以了。

如果你只想得到一个结果:

$key = array_search(40489, array_column($userdb, 'uid'));

对于多个结果

$keys = array_keys(array_column($userdb, 'uid'), 40489);

如果您有一个关联数组,如您可以使用的注释中指出的那样:

$keys = array_keys(array_combine(array_keys($userdb), array_column($userdb, 'uid')),40489);

如果使用的是PHP<5.5.0,则可以使用这个后台谢谢拉姆齐!

更新:我一直在做一些简单的基准测试,多个结果表单似乎是最快的,甚至比Jakub自定义函数还快!


查看完整回答
反对 回复 2019-06-01
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

建在Jakub‘s优秀答案,下面是一个更通用的搜索,它将允许指定的键(而不仅仅是uid):

function searcharray($value, $key, $array) {
   foreach ($array as $k => $val) {
       if ($val[$key] == $value) {
           return $k;
       }
   }
   return null;}

用法:$results = searcharray('searchvalue', searchkey, $array);


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 1239 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信