Php 为多维数组创建智能递归函数,该函数返回一个数组中的所有数组
主要的是多维数组可以是随机的,我不知道里面到底有多少数组。这就是为什么函数应该包含递归,并检查它内部是否有更多数组,下面的示例在没有预配置的情况下无法完成。谢谢你的帮助Php 为多维数组创建智能递归函数,该函数返回一个数组中的所有数组,php,arrays,Php,Arrays,主要的是多维数组可以是随机的,我不知道里面到底有多少数组。这就是为什么函数应该包含递归,并检查它内部是否有更多数组,下面的示例在没有预配置的情况下无法完成。谢谢你的帮助 $arrays = array( array( 'House' => 'Baratheon', 'Sigil' => 'A crowned stag', 'Motto' => 'Ours is the Fury', ), array
$arrays = array(
array(
'House' => 'Baratheon',
'Sigil' => 'A crowned stag',
'Motto' => 'Ours is the Fury',
),
array(
'Leader' => 'Eddard Stark',
'House' => 'Stark',
'Motto' => 'Winter is Coming',
'Sigil' => 'A grey direwolf'
),
array(
array('SomeArray' => 'You are cool'),
'House' => 'Lannister',
'Leader' => 'Tywin Lannister',
'Sigil' => 'A golden lion'
),
array(
'Q' => 'Z'
)
);
function next_element($array) {
foreach ($array as $some_type) {
if (is_array($some_type)) {
return true;
} else {
return false;
}
}
}
function check_in($inputs) {
foreach ($inputs as $position => $input) {
if (is_array($input) && next_element($input)) { // case with multidimentional array
check_in($input);
$check_in_result[] = "There are should be recursion!!!!!";
} else { // case with one simple array
$check_in_result[] = $input;
}
}
return $check_in_result;
}
已尝试使用array_walk_recursive(),但该函数正在处理所有元素,并返回一个包含所有键和值的数组。在这种情况下,下一个阶段即foreach循环应为array(array1、array2、array3、array4)
如前所述:
Array
(
[0] => Array
(
[House] => Baratheon
[Sigil] => A crowned stag
[Motto] => Ours is the Fury
)
[1] => Array
(
[Leader] => Eddard Stark
[House] => Stark
[Motto] => Winter is Coming
[Sigil] => A grey direwolf
)
[2] => Array
(
[SomeArray] => You are cool
)
[3] => Array
(
[House] => Lannister
[Leader] => Tywin Lannister
[Sigil] => A golden lion
)
[4] => Array
(
[Q] => Z
)
)
尝试使用如下递归函数:
function parseMyArray($array) {
$result = [];
$row = [];
foreach($array as $key => $item) {
if (is_array($item)) {
$result = array_merge($result, parseMyArray($item));
} else {
$row[$key] = $item;
}
}
return !empty($row) ? array_merge($result, [$row]) : $result;
}
$result = parseMyArray($arrays);
print_r($result);
在函数调用的每个级别,所有标量值及其键都作为$row
收集到一个数组中,并与嵌套函数调用的$result
合并
您能指定您想要的结果吗?这个问题不清楚。是的,数组([0]=>数组([House]=>Baratheon)[1]=>数组([Leader]=>Eddard Stark)[2]=>数组([SomeArray]=>你很酷)[3]=>数组([House]=>Lannister)[4]=>Array([Q]=>Z))我删除了数组的某些部分。它太大了,应该是一个数组,在一个级别中包含其他数组。通过编辑您的问题添加新信息(可以在帖子底部找到
Edit
链接)。注释不适用于大量信息(如您所发现的)。你应该可以在那里添加整个输出。你确定不能吗?