将子数组移动到父数组php

时间:2016-10-24 05:12:00

标签: php

我有一个像以下的php数组: -

Array
(
   [colors] => Array
      (
        [0] => white
        [1] => Yellow
        [2] => Black
        [3] => white
        [4] => Array
            (
                [0] => white
                [1] => Black
            )

        [5] => Array
            (
                [0] => white
                [1] => Black
            )
        [6] => white
        [7] => red
    )

)

现在我想输出像:

Array
(
   [colors] => Array
    (
      [0] => white
      [1] => Yellow
      [2] => Black
      [3] => white
      [4] => white
      [5] => Black
      [6] => white
      [7] => Black
      [8] => white
      [9] => red
   )
)

表示如果数组元素具有数组值,那么它将被移动到父元素。我不想要子层。请建议我如何实现

4 个答案:

答案 0 :(得分:2)

你可以这样使用array_splice()

for ($i=0; $i<count($arr['colors']); $i++) {
    if (is_array($arr['colors'][$i])) {
        array_splice($arr['colors'], $i, 1, $arr['colors'][$i]);
    }
}

或者也可以创建一个功能来进行单线电话

function flattenArray($arr) {
    for ($i=0; $i<count($arr); $i++) {
        if (is_array($arr[$i])) {
            array_splice($arr, $i, 1, $arr[$i]);
        }
    }
    return $arr; // flattened array
}

$result = flattenArray($arr['colors']);

答案 1 :(得分:0)

请检查

  foreach($myarray as $array){
        foreach($array as $val){
            $array_1[] = $val;
        }
    }

答案 2 :(得分:0)

这是一种方式。

$someArray = ['YOUR_ARRAY_HERE']; 
$newArray = [];

foreach ($someArray as $value) {
    if(is_array($value)) {
        foreach ($value as $innerValue) {
            array_push($newArray, $innerValue);
        }
        continue;
    }

    array_push($newArray, $value);

}

print_r($newArray);

答案 3 :(得分:0)

尝试这个,最佳和最佳的解决方案

$new_array['colors'] = array();
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
$list = iterator_to_array($it,false);
$new_array['colors'] = $list;

print_r($new_array);

<强> DEMO