我有一个多维关联数组。顶级键是数字,内部的关联数组包含键和值的字符串。
以下是数组转储的示例:
Array
(
[1] => Array
(
[AC21T12-M01] => 54318
)
[2] => Array
(
[AC03T11-F01] => 54480
)
)
所以我想搜索'AC03T11-F01'并返回2作为关键位置。
我试过了array_search('AC03T11-F01', $array);
,但它没有返回任何东西,所以我猜它并不像我想的那么简单。
我在搜索某个值时使用了以下函数来键入键位置,所以也许可以调整以搜索键?
function getParentStack($child, $stack) {
foreach ($stack as $k => $v) {
if (is_array($v)) {
// If the current element of the array is an array, recurse it and capture the return
$return = getParentStack($child, $v);
// If the return is an array, stack it and return it
if (is_array($return)) {
//return array($k => $return);
return $k;
}
} else {
// Since we are not on an array, compare directly
if ($v == $child) {
// And if we match, stack it and return it
return array($k => $child);
}
}
}
// Return false since there was nothing found
return false;
}
答案 0 :(得分:2)
$search = 'AC03T11-F01';
$found = false;
foreach($array as $key => $value) {
if(isset($value[$search])) {
$found = $key;
break;
}
}
现在检查$found
。
答案 1 :(得分:0)
您可以过滤数组,然后请求密钥:
$filtered = array_filter($array, function(item) {
return item === 'AC03T11-F01'
});
var_dump( array_keys( $filtered ) );
//⇒ [ 2 ]
是否要检索第一次出现的密钥:
$keys = array_keys( array_filter($array, function(item) {
return item === 'AC03T11-F01'
}));
echo ($key = count( $keys ) > 0 ? $keys[0] : null);
//⇒ 2