array_diff&重新编号数字键

时间:2010-03-04 12:08:02

标签: php arrays key numeric

(I'm a beginner)

我的脚本使用标准

$c = 0;
$t = count($array);

while ($c < $t) {
  $blah = $array[$c];
  ++$c;
}
相当广泛。但是我遇到了一个我需要array_diff的情况,它打破了所有地狱,因为现在数字键有间隙。我到处都收到Undefined offset个错误。

如何重置数组的数字键?数组中对象的顺序无关紧要。

3 个答案:

答案 0 :(得分:27)

要重置密钥,您可以使用array_values()

$array = array_values($array);

答案 1 :(得分:8)

您无需重置阵列的键:您必须改变您的方式。

不是使用while循环并通过索引访问数组元素,而是应该使用foreach循环,它只能从数组中获取元素:

foreach ($array as $key => $value) {
    // $key contains the index of the current element
    // $value contains the value of the current element
}

答案 2 :(得分:2)

谢谢Tatu。

对于lulz,我将与您分享我在等待明智答案时使用的以下白痴黑客:

$badArray = array_diff($allData, $myData);

$string = implode(",",$badArray);

$dump = explode(",",$string);

$goodArray = $dump;

的工作。让我感觉很脏,但它确实有用。