PHP関数「array_unique」使用時の注意
PHPで配列の重複情報を消去したい、ユニークなデータを抽出したいという場面に遭遇したので、array_unique()関数を使ってみました。
例えば、以下のように「a」「b」「c」の3種類のデータが入った配列があった場合に、array_unique()を使うと、8つのデータを3つに絞ってくれます。
$a = array("a","c","a","b","b","a","b","c"); echo sizeof($a); $a = array_unique($a); echo sizeof($a);
ただし、注意する点は、重複したデータを削除しただけであって、キーは詰められていないということです。処理後の配列を詳しく見てみると。
$a = array_unique($a); print_r($a);
結果は「Array ( [0] => a [1] => c [3] => b ) 」となります。つまり普段のように以下のように処理してしまうのはダメって事です。
$a = array_unique($a); for($i = 0; $i < sizeof($a); $i++){ echo $a[$i]; }
出力結果は「ac」となります。
「こんな便利な関数があったのか。楽にクリアできそう。」
と思っていたらこんな落とし穴が、、、また考え直そう。
コメントする