0

最終的な配列で重複が発生しないようにしようとしています。オブジェクトのリストで重複をチェックして$media_candidateコンパイルしようとしています:

$iterator = 0;

// ensure items in final array are unique
while ((count($final_array) < $numResults) && ($iterator < count($media_data))) {
    $media_candidate = $media_data[$iterator++];

    if(!in_array($media_candidate['id'], $final_array)){
         $final_array[] = $media_candidate;
    }
}

最後の 3 つの要素の出力でわかるように、 id で 3 回表示されます。何が起こっているかについてのアイデアはありますか?$final_array343050519221992426_18478933

4

4 に答える 4

4

試してみてください:

if(!in_array($media_candidate['id'], $final_array)){
    $final_array[] = $media_candidate['id'];
}

$final_array[]配列の最後に新しい要素を追加します。

于 2012-12-11T11:30:29.230 に答える
4

まず第一に、すべてのダブレットが最後になるように、最終的な配列を切り捨てません。

2 番目: 車輪の再発明: を読んでください。array_unique()

編集

3 番目: 編集後、さらに簡単な方法があります。

$final_array=array(); 
foreach($media_data as $m) $final_array[$m['id']]=$m;
//You might want the next line or not
$final_array=array_values($final_array); 

本質的に、一意性を配列のハッシュ キーに外部委託します。

于 2012-12-11T11:30:33.350 に答える
2

あなたはチェックしていますが$media_candidate['id']、挿入$media_candidateしています$final_array

于 2012-12-11T11:30:18.543 に答える
0

このような array_unique 関数を試してください

$final_array = array_unique($media_candidate);

于 2012-12-11T11:42:50.313 に答える