That’s an invalid comparison function. It causes the current usort to reverse sort the array and I see no problem with that changing (you’re saying that a value for $a less than $b is in fact greater than it, and a value of $b less than or equal to $a is equal to it).
> On 17/01/2015, at 06:17, Rasmus Lerdorf <ras...@lerdorf.com> wrote: > > I think this broke usort() of more than 16 elements. > > eg. > > <?php > $pr = [ [ 'id' => 'aaa', 'date' => 'Oct 8, 2006' ], > [ 'id' => 'bbb', 'date' => 'Nov 14, 2008'], > [ 'id' => 'ccc', 'date' => 'Dec 19, 2014'], > [ 'id' => 'ddd', 'date' => 'Feb 4, 2010'], > [ 'id' => 'eee', 'date' => 'Jul 7, 2013'], > [ 'id' => 'fff', 'date' => 'Mar 6, 2002'], > [ 'id' => 'ggg', 'date' => 'Mar 1, 2001'], > [ 'id' => 'hhh', 'date' => 'Aug 8, 1999'], > [ 'id' => 'iii', 'date' => 'Sep 5, 2007'], > [ 'id' => 'jjj', 'date' => 'Apr 13, 2004'], > [ 'id' => 'kkk', 'date' => 'Mar 6, 1996'], > [ 'id' => 'lll', 'date' => 'Mar 6, 1997'], > [ 'id' => 'mmm', 'date' => 'Mar 6, 1998'], > [ 'id' => 'nnn', 'date' => 'Mar 6, 1999'], > [ 'id' => 'ooo', 'date' => 'Mar 7, 1996'], > [ 'id' => 'ppp', 'date' => 'Mar 7, 1997'], > [ 'id' => 'qqq', 'date' => 'Mar 7, 2002'] > ]; > > function cmp($a,$b) { > return strtotime($a['date']) < strtotime($b['date']); > } > usort($pr,'cmp'); > print_r($pr); > > Remove the qqq element and it sorts ok. > > -Rasmus > > On 01/14/2015 02:02 AM, Xinchen Hui wrote: >> Commit: 2193de0d185eb9d35e4dd7b93cf69d509b0526b9 >> Author: Xinchen Hui <larue...@gmail.com> Wed, 14 Jan 2015 >> 17:22:58 +0800 >> Parents: ade7a410403d7ec3fc1579bee3b890b1ce549eec >> Branches: master >> >> Link: >> http://git.php.net/?p=php-src.git;a=commitdiff;h=2193de0d185eb9d35e4dd7b93cf69d509b0526b9 >> >> Log: >> Faster sorting algo >> >> Changed paths: >> M UPGRADING >> M Zend/Makefile.am >> M Zend/tests/methods-on-non-objects-usort.phpt >> M Zend/zend_API.c >> M Zend/zend_hash.c >> M Zend/zend_hash.h >> M Zend/zend_ini.c >> M Zend/zend_llist.c >> D Zend/zend_qsort.c >> D Zend/zend_qsort.h >> A Zend/zend_sort.c >> A Zend/zend_sort.h >> M Zend/zend_ts_hash.c >> M Zend/zend_types.h >> M configure.in >> M ext/ereg/ereg.c >> M ext/intl/collator/collator_sort.c >> M ext/phar/dirstream.c >> M ext/phar/phar_internal.h >> M ext/standard/array.c >> M ext/standard/info.c >> M ext/standard/string.c >> M ext/standard/tests/array/002.phpt >> M ext/standard/tests/array/array_intersect_variation9.phpt >> M ext/standard/tests/array/array_unique_variation8.phpt >> M ext/standard/tests/array/array_user_key_compare.phpt >> M ext/standard/tests/array/arsort_variation11.phpt >> M ext/standard/tests/array/arsort_variation3.phpt >> M ext/standard/tests/array/arsort_variation7.phpt >> M ext/standard/tests/array/arsort_variation9.phpt >> M ext/standard/tests/array/asort_variation11.phpt >> M ext/standard/tests/array/asort_variation3.phpt >> M ext/standard/tests/array/asort_variation7.phpt >> M ext/standard/tests/array/asort_variation9.phpt >> M ext/standard/tests/array/bug36975.phpt >> M ext/standard/tests/array/bug50006.phpt >> M ext/standard/tests/array/bug50006_1.phpt >> M ext/standard/tests/array/bug50006_2.phpt >> M ext/standard/tests/array/krsort_variation8.phpt >> M ext/standard/tests/array/krsort_variation9.phpt >> M ext/standard/tests/array/ksort_variation8.phpt >> M ext/standard/tests/array/ksort_variation9.phpt >> M ext/standard/tests/array/natcasesort_basic.phpt >> M ext/standard/tests/array/natcasesort_variation2.phpt >> M ext/standard/tests/array/natcasesort_variation4.phpt >> M ext/standard/tests/array/natcasesort_variation9.phpt >> M ext/standard/tests/array/rsort_variation11.phpt >> M ext/standard/tests/array/rsort_variation9.phpt >> M ext/standard/tests/array/sort_variation11.phpt >> M ext/standard/tests/array/uasort_basic2.phpt >> M ext/standard/tests/array/uasort_object2.phpt >> M ext/standard/tests/array/uasort_variation11.phpt >> M ext/standard/tests/array/uasort_variation6.phpt >> M ext/standard/tests/array/usort_variation6.phpt >> M ext/standard/tests/strings/get_html_translation_table_basic6.phpt >> M main/php.h >> M sapi/cgi/cgi_main.c >> M sapi/cli/php_cli.c >> M sapi/fpm/fpm/fpm_main.c >> M sapi/phpdbg/phpdbg_wait.c >> M win32/build/config.w32 >> >> >> > > --- Simon Welsh Admin of http://91carriage.com/ – Specialised SilverStripe hosting -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php