将元素添加到现有数组

时间:2015-08-04 13:34:19

标签: php arrays

我有一个看起来像这样的数组

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"
      }
    }

理想情况下,如果数组中的所有相同日期已经相同,那么它也应该排除新日期。

1 个答案:

答案 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);