一尘不染

如何在PHP中将多维数组“扁平化”为简单数组?

php

这可能是初学者的问题,但是我已经花了更长的时间阅读文档,而且找不到任何解决方案。我以为我可以对每个维度使用爆破,然后将这些字符串放回一起str_split以组成新的简单数组。但是我不知道联接模式是否也不在值中,因此在执行完str_split原始值之后,可能会损坏。

combine($array1, $array2)多维数组内部是否存在类似于数组的内容?


阅读 468

收藏
2020-05-26

共1个答案

一尘不染

采用 array_walk_recursive

<?php

$aNonFlat = array(
    1,
    2,
    array(
        3,
        4,
        5,
        array(
            6,
            7
        ),
        8,
        9,
    ),
    10,
    11
);

$objTmp = (object) array('aFlat' => array());

array_walk_recursive($aNonFlat, create_function('&$v, $k, &$t', '$t->aFlat[] = $v;'), $objTmp);

var_dump($objTmp->aFlat);

/*
array(11) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
  [6]=>
  int(7)
  [7]=>
  int(8)
  [8]=>
  int(9)
  [9]=>
  int(10)
  [10]=>
  int(11)
}
*/

?>

使用PHP 5.5.9-1ubuntu4.24(CLI)测试(内置:2018年3月16日12:32:06)

2020-05-26