首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP多维数组按值搜索

PHP多维数组按值搜索
EN

Stack Overflow用户
提问于 2011-07-12 16:41:15
回答 21查看 633.9K关注 0票数 425

我有一个数组,我想在其中搜索

并获取数组的密钥。

示例

假设我们有以下二维数组:

代码语言:javascript
复制
$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'
    )
);

函数调用

(第一个用户的uid)应返回

..。

函数调用

应该返回

..。

我试过编写循环,但我想要更快的代码执行速度。

EN

回答 21

Stack Overflow用户

回答已采纳

发布于 2011-07-12 16:44:48

代码语言:javascript
复制
function searchForId($id, $array) {
   foreach ($array as $key => $val) {
       if ($val['uid'] === $id) {
           return $key;
       }
   }
   return null;
}

这将会起作用。你应该这样称呼它:

代码语言:javascript
复制
$id = searchForId('100', $userdb);

重要的是要知道,如果您正在使用

运算符比较的类型必须完全相同,在此示例中,您必须搜索

或者只是使用

取而代之的是

..。

基于

角度

回答。在PHP的更高版本中(

)您可以使用一行程序。

代码语言:javascript
复制
$key = array_search('100', array_column($userdb, 'uid'));

以下是文档:

http://php.net/manual/en/function.array-column.php

..。

票数 598
EN

Stack Overflow用户

发布于 2014-07-02 17:08:39

如果您使用的是(PHP5 >= 5.5.0),则不必编写自己的函数来执行此操作,只需编写以下代码即可完成此操作。

如果你只想要一个结果:

代码语言:javascript
复制
$key = array_search(40489, array_column($userdb, 'uid'));

对于多个结果

代码语言:javascript
复制
$keys = array_keys(array_column($userdb, 'uid'), 40489);

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

代码语言:javascript
复制
$keys = array_keys(array_combine(array_keys($userdb), array_column($userdb, 'uid')),40489);

如果您使用的是PHP < 5.5.0,则可以使用

此后端口

,谢谢ramsey!

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

票数 404
EN

Stack Overflow用户

发布于 2017-06-14 16:59:54

在更高版本的>=(PHP5.5.0)中,您可以使用以下一行程序:

代码语言:javascript
复制
$key = array_search('100', array_column($userdb, 'uid'));
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6661530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档