我有一个多维数组:
$array = array(
array(
"name" => "one",
"date" => "2016-10-10",
"data"=> 30
),
array(
"name" => "one",
"date" => "2016-10-11",
"data"=> 30
),
array(
"name" => "two",
"date" => "2016-10-10",
"data"=> 40
)
);
现在我想合并数组的差异,比如数组(name => one)有两个日期(2016-10-10和2016-10-10)但是数组(name => two)有只有一个日期(2016-10-10),我想用数组添加2016-10-11(name => two)。
array(
"name" => "two",
"date" => "2016-10-11",
"data"=> 0
)
答案 0 :(得分:1)
我可能没有想到更简单的方法,但我认为解决方案看起来需要三个步骤。
按日期对您的值进行分组
foreach ($array as $row) {
$dates[$row['date']][$row['name']] = $row['data'];
}
获取所有名称的唯一列表
$names = array_unique(array_column($array, 'name'));
迭代日期组并将缺失的值填充到原始数组中。
foreach ($dates as $date => $date_names) {
foreach ($names as $name) {
if (!isset($date_names[$name])) {
$array[] = ['name' => $name, 'date' => $date, 'data' => 0];
}
}
}
(如果按名称分组并获得唯一的日期列表,这也应该相同。)