给定一个关联数组,其中值是平面数组,如何搜索值并返回键?

时间:2015-02-01 03:25:17

标签: php arrays search multidimensional-array filtering

给出以下关联数组:

$array = [
    'canine' => ['dog', 'wolf'],
    'feline' => ['cat', 'tiger', 'jaguar']
];

现有的功能(如果有的话)对于检索“犬”有用是有价值的。或者'猫科动物'键?

例如:如果给予' tiger'我想找回“猫科动物”'键。

3 个答案:

答案 0 :(得分:1)

我迟到了,还有其他一些答案,一切都很好

但这是我的一个:

function flatArraySearch($arr, $val) {
    foreach($arr as $key=>$subArr) {
        if (array_search($val,$subArr) !== false) {
            return $key;
        } 
    }
    return false;
}

$array = [
    'canine' => ['dog', 'wolf'],
    'feline' => ['cat', 'tiger', 'jaguar']
];

echo flatArraySearch($array, 'tiger')."\n";

echo flatArraySearch($array, 'wolf')."\n";

echo flatArraySearch($array, 'bird')."\n";

答案 1 :(得分:0)

我相信它没有内置功能,但您可以轻松自己编写。

function search($search, $array) {
   foreach($array as $key => $value)
      if (in_array($search, $value)) return $key;
   return FALSE;
}

答案 2 :(得分:0)

你需要2个循环,外部循环遍历键,内部循环在每个键中找到匹配的值,如下所示:

<?php
$array = [
'canine' => ['dog', 'wolf'],
'feline' => ['cat', 'tiger', 'jaguar']
];

$find = 'tiger';

foreach ($array as $key => $valueArray) {
    foreach ($valueArray as $value) {
        if ($value == $find) {
            echo $key;
            break;
        }
    }
}

&GT;