php - 转置列结构不一致的二维数组

标签 php arrays sorting multidimensional-array transpose

<分区>

Array
(
    [0] => Array
        (
            [color] => Brown
        )

    [1] => Array
        (
            [color] => Green
        )

    [2] => Array
        (
            [width] => 34
        )

)

我需要像这样

[color] => Array
    (
        [0] => green
        [1] => brown
    )

[width] => Array
    (
        [0] => 34
    )

)

我正在尝试使用所有阵列工具。但是我不能让它像我想要的那样。

最佳答案

这对于 array_column() 来说相当简单(需要 PHP >= 5.5.0):

$result = array[
  'color' => array_column($arr, 'color'),
  'width' => array_column($arr, 'width')
];

现场 fiddle :https://eval.in/81746


如果您事先不知道 key ,这是使用 array_walk_recursive() 的另一种解决方案。 :

$result = [];
array_walk_recursive($arr, function($value, $key) use (&$result) {
  if (!isset($result[$key])) {
    $result[$key] = [];
  }
  $result[$key][] = $value;
});

现场 fiddle :https://eval.in/81745

关于php - 转置列结构不一致的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721014/

相关文章:

php - 我无法在 WordPress 模板中的字符串中添加空格

php - 第一次使用数组很慢

php - 如何从嵌套数组创建哈希表 (php)

php - 最佳实践 : delivery of a wallpaper banner with OpenX

javascript - 替代大数组的更好实践 (javascript)

arrays - 在 MATLAB 中,如何将多维数组写为看起来像原始 numpy 数组的字符串?

c++ - 使用结构数组计算?

c++ - 根据另一个对象的值对类中的二维对象进行排序并赋值 C++

Perl:文件输入到排序的文件

javascript - 用JavaScript排序:返回 bool 值是否足以用作比较函数?