PHP - 如果 key 存在于多维关联数组中,return 它的位置
PHP - If key exists in a multidimensional associative array, return its position
我有一个多维关联数组。顶级键是数字,里面的关联数组有键和值的字符串。
这是数组转储的示例:
Array
(
[1] => Array
(
[AC21T12-M01] => 54318
)
[2] => Array
(
[AC03T11-F01] => 54480
)
)
所以我想搜索'AC03T11-F01'和return2作为关键位置
我尝试了 array_search('AC03T11-F01', $array);
但它没有 return 任何东西所以我猜它并不像我想的那样简单。
我在搜索值时使用了下面的函数来键入键位置,所以也许它也可以适用于搜索键?
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;
}
$search = 'AC03T11-F01';
$found = false;
foreach($array as $key => $value) {
if(isset($value[$search])) {
$found = $key;
break;
}
}
现在检查 $found
。
您可以过滤数组然后请求键:
$filtered = array_filter($array, function(item) {
return item === 'AC03T11-F01'
});
var_dump( array_keys( $filtered ) );
//⇒ [ 2 ]
是否要取回第一次出现的key:
$keys = array_keys( array_filter($array, function(item) {
return item === 'AC03T11-F01'
}));
echo ($key = count( $keys ) > 0 ? $keys[0] : null);
//⇒ 2
我有一个多维关联数组。顶级键是数字,里面的关联数组有键和值的字符串。
这是数组转储的示例:
Array
(
[1] => Array
(
[AC21T12-M01] => 54318
)
[2] => Array
(
[AC03T11-F01] => 54480
)
)
所以我想搜索'AC03T11-F01'和return2作为关键位置
我尝试了 array_search('AC03T11-F01', $array);
但它没有 return 任何东西所以我猜它并不像我想的那样简单。
我在搜索值时使用了下面的函数来键入键位置,所以也许它也可以适用于搜索键?
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;
}
$search = 'AC03T11-F01';
$found = false;
foreach($array as $key => $value) {
if(isset($value[$search])) {
$found = $key;
break;
}
}
现在检查 $found
。
您可以过滤数组然后请求键:
$filtered = array_filter($array, function(item) {
return item === 'AC03T11-F01'
});
var_dump( array_keys( $filtered ) );
//⇒ [ 2 ]
是否要取回第一次出现的key:
$keys = array_keys( array_filter($array, function(item) {
return item === 'AC03T11-F01'
}));
echo ($key = count( $keys ) > 0 ? $keys[0] : null);
//⇒ 2