2010-03-04 75 views
5
(I'm a beginner) 

我的脚本使用标准和array_diff和重新编号的数字键

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

while ($c < $t) { 
    $blah = $array[$c]; 
    ++$c; 
} 

相当广泛。但我遇到了一种情况,我也需要array_diff,它打破了一切,因为现在数字键有空隙。我得到Undefined offset各地的错误。

如何重置数组的数字键?数组中对象的顺序是不相关的。

回答

25

要重置键,你可以使用array_values()

$array = array_values($array); 
7

你并不需要重置您阵的钥匙:你必须改变你通过它的方式。

而不是使用一个while循环和索引访问数组elemnts的,你应该使用一个foreach循环,这只会让你从数组元素:

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

+1对你来说,因为我一定会在别处使用这些知识。但支票必须去Tatu击中靶心。谢谢你帕斯卡。 – Drew 2010-03-04 12:15:25

+0

@Andrew:不客气:-) ;;是的,我知道我没有真正回答这个问题,但我认为这将是有用的*(我总是使用foreach循环数组元素)* ;;正如我看到另一个已经谈到'array_values'的答案,我没有把它放在我的。 – 2010-03-04 12:19:52

+0

我很感谢您花时间回答,我真的这么做。我仍然浑身湿透,在“我有一个真正的kickass锤子”阶段学会编程。所以再次感谢您为更合适的代码设计所做的广泛而有益的推动。 – Drew 2010-03-04 12:23:05

2

谢谢大肚。

对于lulz,我将与您分享以下白痴黑客在等待一个合理的答案,我用:

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

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

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

$goodArray = $dump; 

工作。让我觉得很肮脏,但它的工作。