猿问

PHP多维数组值搜索

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.

我试着做循环,但是我想要一个更快的执行代码。


慕无忌1623718
浏览 1240回答 4
4回答

largeQ

如果您使用的是(PHP 5>=5.5.0),您不需要编写自己的函数就可以这样做,只需编写这一行就可以了。如果你只想得到一个结果:$key&nbsp;=&nbsp;array_search(40489,&nbsp;array_column($userdb,&nbsp;'uid'));对于多个结果$keys&nbsp;=&nbsp;array_keys(array_column($userdb,&nbsp;'uid'),&nbsp;40489);如果您有一个关联数组,如您可以使用的注释中指出的那样:$keys&nbsp;=&nbsp;array_keys(array_combine(array_keys($userdb),&nbsp;array_column($userdb,&nbsp;'uid')),40489);如果使用的是PHP<5.5.0,则可以使用这个后台谢谢拉姆齐!更新:我一直在做一些简单的基准测试,多个结果表单似乎是最快的,甚至比Jakub自定义函数还快!

元芳怎么了

建在Jakub‘s优秀答案,下面是一个更通用的搜索,它将允许指定的键(而不仅仅是uid):function&nbsp;searcharray($value,&nbsp;$key,&nbsp;$array)&nbsp;{ &nbsp;&nbsp;&nbsp;foreach&nbsp;($array&nbsp;as&nbsp;$k&nbsp;=>&nbsp;$val)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($val[$key]&nbsp;==&nbsp;$value)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$k; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;return&nbsp;null;}用法:$results = searcharray('searchvalue', searchkey, $array);
随时随地看视频慕课网APP
我要回答