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

Reply via email to