array_unique() のデフォルトの挙動が元に戻ります
id:hnw さんが既に書いておられますが、array_unique() のデフォルトの挙動が PHP 5.2.8 以前と同じに修正されることになりました。PHP 5.2.10 以降で反映される予定です。
- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.66&r2=1.308.2.21.2.67
- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.37.2.55&r2=1.308.2.21.2.37.2.56
- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.477&r2=1.478
PHP では基本的な関数の挙動が変わったり、バグが入ったりすることがよくあります。
バージョン間の互換性を考慮したい場合、うまくラッパー関数を使うと、ある程度の互換性を簡単に確保できます。
今回の array_unique() を例にすると、以下のようになります。
<?php function wrapper_array_unique( $array, $sort_flags = SORT_STRING ) { if ( version_compare( PHP_VERSION, '5.2.9', '>=' ) ) { return array_unique( $array, $sort_flags ); } return array_unique( $array ); }