2010-03-04 29 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; 

工作。讓我覺得很骯髒,但它的工作。