2013-03-29 88 views
0

我想通過刪除重複值合併兩個數組。 即如果$array_two[$i]->id == $array_one[$j]->yelp_id那麼它是重複的。 所以我想刪除它。未設置陣列導致內部服務器錯誤

這是我的代碼..

for($i=0;$i<count($array_two);$i++) 
    { 
    for($j=0;$j<count($array_one); $j++) 
    { 
     if($array_two[$i]->id == $array_one[$j]->yelp_id) 
     {    

     //print_r($array_two[$i]); 
     unset($array_two[$i]); 

     } 

    } 
} 
$array=array_merge($array_one,$array_two); 

當我這樣做我正在一個

內部服務器錯誤500 ..

,但是當我使用print_r打印我得到重複條目..

什麼是w rong在這個代碼中?

請幫助

+3

你讀過error.log嗎? – sectus

+0

你確定索引是數字嗎? – hjpotter92

+0

array_merge自動處理重複條目並超過第一個數組。不需要做unset()。請檢查http://php.net/array_merge –

回答

3

您需要unset($array_two[$i]);後加入break;因爲它仍在通過for($j),並試圖再次打的價值,但它不存在了。

此外,您應該將count()函數移出for循環聲明。它每次重新計算長度,並且如果從陣列中刪除項目,則它不會觸擊陣列中的最後幾個項目,因爲每次計數都會減少。

$count1 = count($array_two); 
$count2 = count($array_one); 
for ($i = 0; $i < $count1; $i++) { 
    for ($j = 0; $j < $count2; $j++) { 
     if ($array_two[$i]->id == $array_one[$j]->yelp_id) { 
      unset($array_two[$i]); 
      break; 
     } 
    } 
} 
+0

謝謝!休息;解決了這個問題.. –

+0

是的,但是你應該改變'count()'函數,如果你在結尾'$ array_two'有重複的話,如果你在它們前面有重複項,他們將不會被發現。 – Pitchinnate

相關問題