0

我已经成功地使用以下代码通过差异合并了两个数组:

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

这个想法是让a额外保存b中不存在于a中的元素。

我现在对以下数组格式做同样的事情时遇到问题:

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

)

我知道它们的键不再是日期,但是我应该如何检查每个数组并确保我没有重复输入?

4

1 回答 1

1
$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"
  }
}
于 2013-06-25T21:52:56.243 回答