我有一个看起来像这样的数组
stringstream
正如您所看到的,它包括排序,日期,月份和年份。我想将新元素添加到具有值" day"的相同数组中。 +1。
如果2015年8月8日排在第8位,它还应包括2015年8月9日。 我需要一种方法来提取值,计算新日期并在所有日期中放回。 结果应如下所示:
array(3) {
[0]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(2) "2"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[1]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "5"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[2]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "9"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
}
理想情况下,如果数组中的所有相同日期已经相同,那么它也应该排除新日期。
答案 0 :(得分:1)
使用新项创建数组并将其与旧数组合并
$temp = array();
foreach($array as $item)
$temp[] = array_replace($item, array("day" => $item["day"]+1));
$res = array_merge($array, $temp);
要排除重复的一天
$days = array_reduce($array,
function($a, $i) { $a[$i['day']] = 1; return $a; ; },
array());
$temp = array();
foreach($array as $item)
if (! isset($days[$item["day"]+1]))
$temp[] = array_replace($item, array("day" => $item["day"]+1));
$res = array_merge($array, $temp);