array_column 不适用于嵌套数组中的第一个键
array_column doesn't work with first key in nested array
我有一个像这样的嵌套数组
$array = array(
[2] => array(
[5] => array(
[7] => array(
[46] => array()
)
),
[108] => array()
),
[14] => array(),
[8] => array(
[72] => array()
)
)
只知道密钥,我需要在数组中找到它并获取它的所有嵌套数据。使用 array_column 仅当我从二级密钥
开始时才有效
$foo = array_column($array, 2) // returns empty array
$bar = array_column($array, 5) // returns all its nested data
这是为什么,在不知道级别的情况下使用任意键执行此操作的正确方法是什么
这是一个递归函数,它在每个点检查键是否与所需的键匹配,如果是,它 return 是值,如果不是,它将查找也是数组的元素(这是在哪里递归位进来)和 return 如果在那里找到匹配...
function nested_array_key_search ( array $array, $key ) {
foreach ( $array as $elementKey => $element ) {
if ( $elementKey === $key ) {
return $element;
}
if ( is_array($element) ) {
$nested = nested_array_column ( $element, $key );
// If the recursive call returns a value
if ( $nested !== false ) {
return $nested;
}
}
}
// Not found, return false
return false;
}
$bar = nested_array_key_search($array, 2);
print_r($bar);
给...
Array
(
[5] => Array
(
[7] => Array
(
[46] => Array
(
)
)
)
[108] => Array
(
)
)
我有一个像这样的嵌套数组
$array = array(
[2] => array(
[5] => array(
[7] => array(
[46] => array()
)
),
[108] => array()
),
[14] => array(),
[8] => array(
[72] => array()
)
)
只知道密钥,我需要在数组中找到它并获取它的所有嵌套数据。使用 array_column 仅当我从二级密钥
开始时才有效$foo = array_column($array, 2) // returns empty array
$bar = array_column($array, 5) // returns all its nested data
这是为什么,在不知道级别的情况下使用任意键执行此操作的正确方法是什么
这是一个递归函数,它在每个点检查键是否与所需的键匹配,如果是,它 return 是值,如果不是,它将查找也是数组的元素(这是在哪里递归位进来)和 return 如果在那里找到匹配...
function nested_array_key_search ( array $array, $key ) {
foreach ( $array as $elementKey => $element ) {
if ( $elementKey === $key ) {
return $element;
}
if ( is_array($element) ) {
$nested = nested_array_column ( $element, $key );
// If the recursive call returns a value
if ( $nested !== false ) {
return $nested;
}
}
}
// Not found, return false
return false;
}
$bar = nested_array_key_search($array, 2);
print_r($bar);
给...
Array
(
[5] => Array
(
[7] => Array
(
[46] => Array
(
)
)
)
[108] => Array
(
)
)