
[英]php - create new array by key condition and fill by another array value
[英]Php, create new array on basis of value missing for key
我有一个多维数组:
$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
)
);
现在我想合并数组的差异,例如如果数组(名称=>一个)有两个日期(2016-10-10和2016-10-10),但数组(名称=>两个)只有一个日期(2016 -10-10),我想添加2016-10-11数组(名称=>两个)。
array(
"name" => "two",
"date" => "2016-10-11",
"data"=> 0
)
我可能没有想到过更简单的方法,但是我认为解决方案似乎需要三个步骤。
按日期分组您的值
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]; } } }
(如果按名称分组并获得唯一的日期列表,此方法也应相同。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.