将子数组移动到父数组php


Move child array to parent array 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
   )
)

表示如果数组元素有数组值,那么它将被移动到父元素。我不想要子层。

您可以这样使用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']);

请检查

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

有个办法。

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

试试这个,最佳最优解

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