PHP合并/减少一个数组

时间:2018-01-09 06:41:20

标签: php arrays

我想将一个数组与当前输出合并,如下所示,与预期输出结合。

我正在使用一个函数array_reduce($currentArray, 'array_merge', array());,它工作得非常好。但它现在似乎没有用。

当前输出:

Array 
(
    [0] => Array
        (
            [0] => Array(...), 
            [1] => Array(...), 
            [2] => Array(...), 
        )
    [1] => Array
        (
            [0] => Array(...), 
            [1] => Array(...), 
            [2] => Array(...), "
        )
)

预期输出:

Array 
(

            [0] => Array(...), 
            [1] => Array(...), 
            [2] => Array(...), 
            [3] => Array(...), 
            [4] => Array(...), 
            [5] => Array(...), 

)

4 个答案:

答案 0 :(得分:2)

您可以尝试以下两种方式

<强> 1。 call_user_func_array:使用参数数组

调用回调

<强> 2。 array_reduce:使用回调函数迭代地将数组减少为单个值

<?php

$array = [
    [
        [
            "name" ,"email", "mobile"
        ],
        [
            "name1" ,"email1", "mobile1"
        ]
    ],
    [
        [
            "name2" ,"email2", "mobile2"
        ],
        [
            "name3" ,"email3", "mobile3"
        ]
    ],
];

$flat = call_user_func_array('array_merge', $array);
$flat = array_reduce($array, 'array_merge', array());

echo "<pre>";
print_r($flat);

答案 1 :(得分:0)

你可以试试这个: call_user_func_array

$oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);

print_r( $oneDimensionalArray);

答案 2 :(得分:-1)

试一试。

$final = array();
foreach($currentArray as $sub_array) {
    $final = array_merge($final, $sub_array);
}

foreach循环将遍历数组,数组合并将内容数组与$final数组合并。

答案 3 :(得分:-3)

我之前使用的最佳解决方案

<强> 样本

<?php

$array = array(
'0' => array("1","2","3"),
'1' => array("1","2","3"),
'2' => array("1","2","3"),
);

echo "<pre>";
print_r($array);

function array_flatten($array) { 
      if (!is_array($array)) { 
        return FALSE;
      } 
      $result = array(); 
      foreach ($array as $key => $value) { 
        if (is_array($value)) { 
          $result = array_merge($result, array_flatten($value)); 
        } 
        else { 
          $result[$key] = $value; 
        } 
      } 
      return $result; 
    }
echo "<pre>";
print_r(array_flatten($array));