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
链接)。注释不适用于大量信息(如您所发现的)。你应该可以在那里添加整个输出。你确定不能吗?