我有一个这样的数组:
$my_array = array(
array(
array('cnt' => 1, 'date' => '2016-06-18', 'name' => 'Phone Calls'),
array('cnt' => 1,'date' => '2016-06-18','name' => 'Others Works')
),
array(
array('cnt' => 2 , 'date' => '2016-06-17', 'name' => 'Phone Calls'),
array('cnt' => 1, 'date' => '2016-06-17', 'name' => 'Others Works')
)
);
我需要将其转换为以下格式以实现我的特定目的。
$desired_result = array(
array('name' => 'Phone Calls', 'dateDetail' => array(
array('cnt' => 1, 'date' => '2016-06-18'),
array('cnt' => 2, 'date' => '2016-06-17'),
)),
array('name' => 'Others Works', 'dateDetail' => array(
array('cnt' => 1, 'date' => '2016-06-18'),
array('cnt' => 1, 'date' => '2016-06-17'),
))
);
我需要按名称对数组进行分组,并将所有日期和计数数据放在一起。有人可以帮我格式化这个数组吗?
答案 0 :(得分:2)
您可以通过从每个最低级别数组中弹出名称并将其用作重组数组的更高级别键来按名称分组。
foreach ($your_array as $day) {
foreach ($day as $item) {
$name = array_pop($item); // removes the 'name' key and returns it
$converted[$name]['name'] = $name;
$converted[$name]['dateDetail'][] = $item;
}
}
$result = array_values($converted); // convert from string keys to numeric
array_pop
只能使用,因为name
是项目数组中的最后一个键。如果不是,您需要指定要删除和使用的键,如下所示:
$name = $item['name'];
unset($item['name']);
要在每个date
的{{1}}数组中按dateDetail
添加分组,这个想法与按名称分组时的想法相同。在name
中使用date
作为密钥,并为重复的日期值添加dateDetail
密钥。
cnt