php - 如何使用 PHP array_walk 函数重新排列多维数组中的键?

标签 php arrays array-walk

我有一个以下格式的 PHP 数组:

array (size=2)
  '2019-09-28' => 
    array (size=2)
      'A' => float 4
      'B' => float 85
      'C' => float 200
  '2019-09-29' => 
    array (size=2)
      'A' => float 5
      'B' => float 83
      'C' => float 202

我正在尝试使用 PHP 中的 array_walk() 函数来重新排列数组键,如下所示:
array (size=3)
  'A' => 
    array (size=2)
      '2019-09-28' => float 4
      '2019-09-29' => float 5
  'B' => 
    array (size=2)
      '2019-09-28' => float 85
      '2019-09-29' => float 83
  'C' => 
    array (size=2)
      '2019-09-28' => float 200
      '2019-09-29' => float 202

我正在使用以下代码来做到这一点:
$result_arr = [];   
array_walk($myArray,function($v,$k) use (&$result_arr){
  $result_arr[key($v)][$k] = $v[key($v)];
});

但是我目前使用的这段代码只生成第一个项目 A,而不生成以下项目 B 和 C。即我期待完整的输出,但只收到第一个项目,如下所示:
array (size=1)
 'A' => 
   array (size=2)
    '2019-09-28' => float 4
    '2019-09-29' => float 5

请帮忙。我错过了什么?

最佳答案

foreach解决方案, fiddle here :

$array = [
  '2019-09-28' => [
    'A' => 4,
    'B' => 85,
    'C' => 200,
  ],
 '2019-09-29' => [
    'A' => 5,
    'B' => 83,
    'C' => 202,
  ]
];

$res = [];
foreach ($array as $key => $item) {
    foreach ($item as $itemKey => $itemValue) {
        $res[$itemKey][$key] = $itemValue;
    }
}
print_r($res);

关于php - 如何使用 PHP array_walk 函数重新排列多维数组中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58185623/

相关文章:

c# - 如何在 c# 中的打包记录中读取固定大小字符串的 Delphi 数组

php - array_walk() 是做什么的?

php - 大于或小于 array_walk 递归

PHP 通知 : A non well formed numeric value encountered

PHP mysqli_fetch_assoc 存储到数组中

javascript - 检查.push之前数组中是否存在数据

带 while 循环的 JavaScript 数组

javascript - 如何将数据库中的选定值设置到 Laravel 中的下拉列表/选择框中?

php - 音频元素在 Safari 5.1 中不起作用