「array_unique関数がPHP5.2.9から後方互換性を失いました」の内容について、PHPの中の人も認識を改めたようです。次のようなタレコミがありました。
【速報】「sort()関数は相当おかしい」と PHP 開発者を訴えていた問題で、原告の hnw さんが最高裁で勝訴の模様 http://news.php.net/php.internals/43980
id:moriyoshiさんの地道な働きかけのおかげだと思います。ありがとうございます。
そんなわけで、array_uniqueの第2引数のデフォルト値をSORT_STRINGにする(=5.2.8以前の挙動に合わせる)ことで落ち着いたようです。先ほどsnapshotを取って来たところ、5.2系も5.3系も直っていました。
また、PHP 5.2.9の挙動を今後のバージョンに合わせたい場合はext/standard/array.cに下記のパッチを当てればOKです。
--- php-5.2.9/ext/standard/array.c.orig 2009-05-16 19:35:23.000000000 +0900 +++ php-5.2.9/ext/standard/array.c 2009-05-16 19:35:36.000000000 +0900 @@ -2839,7 +2839,7 @@ }; struct bucketindex *arTmp, *cmpdata, *lastkept; unsigned int i; - long sort_type = SORT_REGULAR; + long sort_type = SORT_STRING; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|l", &array, &sort_type) == FAILURE) { return;