PHP多维数组用于压缩WITH KEYS

时间:2016-02-09 14:01:16

标签: php arrays multidimensional-array

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

我有一个像这样的数组

    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" ] 的索引。

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

<h4>

1 个答案:

答案 0 :(得分:2)

您可以为此编写递归函数:

$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));