【问题标题】:Given an associative array where the values are flat arrays, how can I search the values and return the key?给定一个关联数组,其中值是平面数组,我如何搜索值并返回键?
【发布时间】:2015-03-31 07:11:45
【问题描述】:
给定以下关联数组:
$array = [
'canine' => ['dog', 'wolf'],
'feline' => ['cat', 'tiger', 'jaguar']
];
现有的哪些函数(如果有)对于检索“犬”或“猫”键很有价值?
例如:如果给定 'tiger' 我想检索 'feline' 键。
【问题讨论】:
标签:
php
arrays
search
multidimensional-array
filtering
【解决方案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";
【解决方案2】:
你需要2个循环,外层循环遍历key,内层循环在每个key中找到匹配的值,像这样:
<?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;
}
}
}
?>
【解决方案3】:
我相信它没有内置函数,但是您可以轻松地自己编写它。
function search($search, $array) {
foreach($array as $key => $value)
if (in_array($search, $value)) return $key;
return FALSE;
}