array_diff()留下空数组键

时间:2012-04-11 14:10:55

标签: php array-difference

也许我在这里遗漏了一些东西,但array_diff()似乎在数组的末尾留下了空的kesys。

使用此示例数据 -

$term_ids = array(0 => 242, 1 => 270);
$term_ids = array_diff($term_ids, array(242, 243, 266, 267, 268, 269));

我被留下了 -

Array
(
    [1] => 270
    [0] => 
)

根据我的理解,这是不正确的([0]应该是未设置的,只留下[1])。我之后使用$term_ids = array_values($term_ids);来使密钥正确,但似乎这不应该是必要的,所以我想知道是否有人比我更了解?

2 个答案:

答案 0 :(得分:2)

无法重现:

$term_ids = array(0 => 242, 1 => 270);
$term_ids = array_diff($term_ids, array(242, 243, 266, 267, 268, 269));
print_r($term_ids);

输出:

Array
(
    [1] => 270
)

答案 1 :(得分:1)

我试过

<?php

$arr1 = array(15, 16, 17,18);
$arr2 = array(15, 17);

$arr3 = array_diff($arr1, $arr2);

var_dump($arr3);

&GT;

我得到[1] =&gt; 16,[3] =&gt; 18。

这实际上似乎是预期的结果,如the offical page上的示例所示。