简体   繁体   English

在关联数组中按值搜索并返回其键

[英]Search by value in an associative array and return its key

What is the easiest way to search in such an array?在这样的数组中搜索的最简单方法是什么? Eg search for 5f8ff7a0c49db9d and return 5f8ff7bee02fd05例如搜索 5f8ff7a0c49db9d 并返回 5f8ff7bee02fd05

This doesn't work:这不起作用:

array_search('5f8ff7a0c49db9d', array_column($arr, 1))


[0] : Array
(
    [0] => Array
        (
            [5f8ff7bedde211e] => 5f8e6a74c1d4efe
        )

    [1] => Array
        (
            [5f8ff7bee02fd05] => 5f8ff7a0c49db9d
        )

    [2] => Array
        (
            [5f8ff7bee2735ce] => 5f8ff7a0c6e8039
        )

)

You can reduce the whole array as following:您可以按如下方式减少整个数组:

$keyedByValue = array_reduce($arr, static function(array $carry, array $item) {
    return array_merge($carry, array_reverse($item));
}, []);

$yourKey = $keyedByValue['5f8ff7a0c49db9d'];

Or you can even use a simple loop:或者你甚至可以使用一个简单的循环:

$result = null;
$search = '5f8ff7a0c49db9d';

foreach ($arr as $item) {
    $item = array_reverse($item);

    if (isset($item[$search])) {
         $result = $item[$search];
         break;
    }
}

array_search has this in the examples: array_search在示例中有这个:

$foundKey = array_search($needle, array_column($array, 'key')); 

which works fine这工作正常

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM