リストの中をin_array()関数ではなくisset()関数で探索する書き方

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