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


Given an associative array where the values are flat arrays, how can I search the values and return the key?

给定以下关联数组:

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

使用什么现有功能(如果有的话)来检索"犬"或"猫"键是有价值的?

例如:如果给定"老虎",我想检索"猫"键。

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

但这是我的:

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";
我相信

它没有内置函数,但你可以很容易地自己编写它。

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

你需要 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;
        }
    }
}

?>