PHP多维数组用于压缩WITH KEYS

有没有办法用键来展平多维(最多1到3级)?

我有这样的数组

    array(
        'Orange',
        'Grape',
        'Banana' => array(
            'Big',
            'Small'
        ),
        'Apple' => array(
            'Red',
            'Green' => array(
                'Soft',
                'Hard'
            )
        )
    );

我希望它像这样

    array(
        'Orange',
        'Grape',
        'Banana',
        'Big',
        'Small',
        'Apple',
        'Red',
        'Green',
        'Soft',
        'Hard'
    );

因此它将保持外观的顺序,以便最近使用array_keys获取索引.

我已经尝试了几种方法,但如果数组元素是新数组的键,它不会被展平,只是跳过,所以我的最终数组看起来像这样

array:7 [▼
  0 => "Orange"
  1 => "Grape"
  2 => "Big"
  3 => "Small"
  4 => "Red"
  5 => "Soft"
  6 => "Hard"
]

最佳答案 您可以为此编写递归函数:

$nested = array(
    'Orange',
    'Grape',
    'Banana' => array(
        'Big',
        'Small'
    ),
    'Apple' => array(
        'Red',
        'Green' => array(
            'Soft',
            'Hard'
        )
    )
);

function flattern($array)
{
    $flat=[];
    foreach($array as $key=>$val){
        if(is_array($val)){
            $flat[]=$key;
            $flat = array_merge($flat, flattern($val));
        }else{
            $flat[]=$val;
        }
    }
    return $flat;
}

var_dump(flattern($nested));
点赞