簡體   English   中英

與多維數組混淆和合並

[英]Confusion with multidimensional arrays and merging

我成功地使用以下代碼合並了兩個數組:

$a=array("2013-08-22"=>"12","2013-08-25"=>"5","2013-08-27"=>"10");
$b=array("2013-08-22"=>"1","2013-08-23"=>"3","2013-08-25"=>"5","2013-08-27"=>"10","2013-08-29"=>"5");

foreach ($b as $key => $value){
    if(!array_key_exists($key, $a)){
        $a[$key]=0;
    }
}

這將返回:

Array
(
    [2013-08-22] => 0
    [2013-08-23] => 0
    [2013-08-25] => 5
    [2013-08-27] => 10
    [2013-08-29] => 0
    [2013-12-22] => 12
)

我們的想法是以附加地保持從步驟b中不存在元素。

我在使用以下數組格式時遇到了同樣的問題:

$a=array(array("2013-12-22","12"),array("2013-08-25","5"),array("2013-08-27","10"));
$b=array(array("2013-08-22","1"),array("2013-08-23","3"),array("2013-08-25","5"),array("2013-08-27","10"),array("2013-08-29","5"));

我去試試這個:

foreach ($b as $key => $value){
    if(!array_key_exists($key, $a)){
        $a[$key]=array($value[0], 0);
    }
}

但是返回的結果遠非我所需要的:

Array
(
    [0] => Array
        (
            [0] => 2013-12-22
            [1] => 12
        )

    [1] => Array
        (
            [0] => 2013-08-25
            [1] => 5
        )

    [2] => Array
        (
            [0] => 2013-08-27
            [1] => 10
        )

    [3] => Array
        (
            [0] => 2013-08-27
            [1] => 0
        )

    [4] => Array
        (
            [0] => 2013-08-29
            [1] => 0
        )

)

我知道它們的鍵不再是日期,但是我應該如何檢查每個數組並確保沒有重復輸入?

$a = array(
    array("2013-12-22","12"),
    array("2013-08-25","5"),
    array("2013-08-27","10"));
$b = array(
    array("2013-08-22","1"),
    array("2013-08-23","3"),
    array("2013-08-25","5"),
    array("2013-08-27","10"),
    array("2013-08-29","5"));
$exists = array();
foreach ($a as $data) {
    $exists[$data[0]] = 1;
}
foreach ($b as $data) {
    if (array_key_exists($data[0], $exists)) {
        continue;
    }
    $a[] = array($data[0], $data[1]);
}

$ a現在包含:

array(6) {
  [0]=>
  array(2) {
    [0]=>
    string(10) "2013-12-22"
    [1]=>
    string(2) "12"
  }
  [1]=>
  array(2) {
    [0]=>
    string(10) "2013-08-25"
    [1]=>
    string(1) "5"
  }
  [2]=>
  array(2) {
    [0]=>
    string(10) "2013-08-27"
    [1]=>
    string(2) "10"
  }
  [3]=>
  array(2) {
    [0]=>
    string(10) "2013-08-22"
    [1]=>
    string(1) "1"
  }
  [4]=>
  array(2) {
    [0]=>
    string(10) "2013-08-23"
    [1]=>
    string(1) "3"
  }
  [5]=>
  array(2) {
    [0]=>
    string(10) "2013-08-29"
    [1]=>
    string(1) "5"
  }
}

暫無
暫無

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

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