【问题标题】:Convert a multidimensional array into simpler form [duplicate]将多维数组转换为更简单的形式[重复]
【发布时间】:2016-06-06 13:59:17
【问题描述】:

我有一个如下所示的数组, 如何将上面的array1转换成array2的形式?

数组1

Array
(
[0] => Array
    (
        [0] => 500 GB
    )

[1] => Array
    (
        [0] => 100 GB
    )

 )

数组2

Array
    (
        [0] => 500 GB
        [1] => 100 GB
 )

【问题讨论】:

  • 对于像这样只有一个元素的简单数组,array_column()

标签: php arrays multidimensional-array


【解决方案1】:
$yourArray = [[0 => '500 GB'], [0 => '100 GB'], [1 => '200 GB']];
$result = array_filter(
    array_map(
    function($element) {
        if (isset($element[0])) {
            return $element[0];
        }

        return;
    },
    $yourArray
    ),
    function($element) {
        return $element !== null;
    }
);

echo var_dump($result); // array(2) { [0]=> string(6) "500 GB" [1]=> string(6) "100 GB" }

这仅适用于 php >= 5.4(因为数组短语法)。如果您在旧版本上运行,只需将 [] 替换为 array()

说明

array_filter 用于从数组中排除某些值(通过使用回调函数)。在这种情况下,您从 array_map 获得的 NULL 值。
array_map 用于应用函数来“转换”您的数组。特别是它对每个数组元素应用一个函数,并在函数应用后返回该元素。

【讨论】:

  • 返回前最好检查$element[0]是否存在,避免未定义变量警告
  • @Raptor:是的,当然
  • $tempArray = array(0=>array(0=>"500 GB"), 1=>array(0=>"100 GB")); $flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($tempArray)), 0);
猜你喜欢
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 2019-03-20
  • 1970-01-01
  • 2015-07-31
相关资源
最近更新 更多