簡體   English   中英

將元素添加到現有數組

[英]Add elements to existing array

我有一個看起來像這樣的數組

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

如您所見,它由排序,日期,月份和年份組成。 我想將新元素添加到值“ day” +1的同一數組中。

如果數組中包含2015年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"
          }
          [3]=>
          array(4) {
            ["sort"]=>
            string(0) ""
            ["day"]=>
            string(2) "3"
            ["month"]=>
            string(1) "8"
            ["year"]=>
            string(4) "2015"
          }
          [4]=>
          array(4) {
            ["sort"]=>
            string(0) ""
            ["day"]=>
            string(1) "6"
            ["month"]=>
            string(1) "8"
            ["year"]=>
            string(4) "2015"
          }
          [5]=>
          array(4) {
            ["sort"]=>
            string(0) ""
            ["day"]=>
            string(1) "10"
            ["month"]=>
            string(1) "8"
            ["year"]=>
            string(4) "2015"
          }
        }

理想情況下,如果數組中所有日期都相同,則它還應排除新日期。

用新項目創建數組並將其與舊數組合並

$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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM