【问题标题】:How to convert Multi-Dimensional Associative array in to Numeric Array in php, without looping?如何在不循环的情况下将多维关联数组转换为 php 中的数字数组?
【发布时间】:2026-01-22 08:50:02
【问题描述】:

我创建了一个工作函数,用于将以下关联数组拆分为两个数值数组。不知道有没有更好的方法,避免循环。

我有一个数组如下。

大批 ( [0] => 标准类对象 ( [创建时间] => 2014 年 2 月 16 日 [出现次数] => 1 ) [1] => 标准类对象 ( [创建时间] => 2014 年 2 月 17 日 [发生次数] => 8 ) [2] => 标准类对象 ( [创建时间] => 2014 年 2 月 18 日 [出现次数] => 4 ) [3] => 标准类对象 ( [创建时间] => 20/02/2014 [发生次数] => 11 ) )

需要将其转换成两个数值数组

大批 ( [0] => 16/02/2014 [1] => 2014 年 2 月 17 日 [2] => 2014 年 2 月 18 日 [3] => 2014 年 2 月 20 日 ) 大批 ( [0] => 1 [1] => 8 [2] => 4 [3] => 11 )

我使用了foreach 循环

$array1 = 数组(); $array2 = 数组(); foreach ($mainArray as $key => $value) { $array1[] = $value->CreatedAt; $array2[] = $value->出现次数; } print_r($array1); print_r($array2);

但是如果我在 mainArray 中有 1000 行,它会影响性能。如果您有更好的解决方案,请告诉我们。

【问题讨论】:

  • 您可以使用array_values。见*.com/questions/6446942/php-convert-array-keys
  • 我认为除了@SatishSharma 答案之外,您还需要array_keys。不确定这会比您的解决方案多快(快)。
  • 是关联数组还是对象?根据您发布的内容,它似乎是后者。

标签: php arrays multidimensional-array split


【解决方案1】:

试试这个:

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

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

    var_dump($objName->aFlat);

推荐人: How to "flatten" a multi-dimensional array to simple one in PHP?

【讨论】:

    【解决方案2】:

    http://in1.php.net/array_column

    也许这可以解决你的问题!

    【讨论】:

    • 这是一个很好的解决方案。但是 array_column 在 php 5.5 及更高版本中可用。大多数服务器都运行在 php 5.3 和 5.4 中。