array_unique だけだと困った事に

PHPの配列で重複した値を取り除きたいときに array_unique を使います。

$places = array(
'渋谷',
'新宿',
'新宿',
'中野',
'渋谷',
'池袋',
);


$places = array_unique($places);

としたあと、
echo count($places);
とすると
表示結果は、4になります。

for文で、中身を確認すると
'渋谷',
'新宿',
'中野',
と表示されます。

あれー?と思って
print_r($places)
で確認したら

Array ( [0] => '渋谷' [1] => '新宿' [3] => '中野' [5] => '池袋' )

ですって、、、

つまり、array_unique は配列の添字(インデックス)を維持してしまうのでした。
結果として、

$places = array_merge(array_unique($places));

とすれば、「入力配列の中にある数値添字要素の添字の数値は、 結果の配列ではゼロから始まる連続した数値に置き換えられます。」

まったく奥が深いです。
[PR]

by hiro__neko | 2013-02-01 14:14 | PGじゃない人間の備忘録  

<< RSSが簡単につくれるsimp... PHP1年生が、自動ツイートす... >>