0

重複する値を削除して、2 つの配列をマージしようとしています。つまり $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ていると、重複したエントリが表示されます..

このコードで何が間違っていますか?

助けてください

4

1 に答える 1

3

break;原因の後に追加する必要がありますが、unset($array_two[$i]);それはまだ通過しており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;
        }
    }
}
于 2013-03-29T13:45:42.620 に答える