idなど重複がないようなリストを作りたいとき、 in_arrayはO(n)で、issetはO(1)らしいので、チェック用配列のデータ構造を変えて、高速化してみましょう。
$check_arr = array(); $i = 0; foreach ($arr as $item){ if (! isset($check_arr[$item])) { $check_arr[$item] = $i++; } } $items = array_flip($check_arr);
以下のURLで検証が行われています。
http://d.hatena.ne.jp/msakamoto-sf/20080113/1200206322