php - 如何使用 PHP 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 和 CIe 我希望得到完整的输出,但只收到第一个项目,如下所示:
array (size=1)
'A' =>
array (size=2)
'2019-09-28' => float 4
'2019-09-29' => float 5
请帮忙。我错过了什么?
解决方案
你也需要在forach()
那里申请:
$result_arr = [];
array_walk($myArray,function($value,$key) use (&$result_arr){
foreach($value as $k=> $val){ //$value is an array, so iterate over it
$result_arr[$k][$key] = $val;
}
});
print_r($result_arr);
推荐阅读
- f# - 当调用的函数有多个参数时,如何在 F# 中使用 list.filter?
- javascript - 获取自动递增的 id 以返回我的 POST 请求?
- visual-studio - 如何在 Visual Studio 2019 中重命名生成输出文件
- bash - 我想要一个 for 循环脚本在每个编号的子目录(1-400)中执行一些命令
- cypress - 带有域选项的 cy.setCookies() 会导致错误
- ilog - JRules 决策表的限制
- excel - SAS ODS 是否支持 Excel 数组公式 (CSE-Formulas)?
- typescript - Why I got an error type assertion on object literals is forbidden, use a type annotation instead.tslint(no-object-literal-type-assertion)?
- android - Android 如何:获取 JSONObject 和 JSONArray
- sql - 对没有要分组的字段的行求和