ID: 12848 Comment by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Closed Bug Type: Arrays related Operating System: win98 PHP Version: 4.0.6 New Comment:
I've also encountered this problem. Version: PHP Version 4.2.3 Environment: FreeBSD 4.7-PRERELEASE #1: Mon Sep 2 12:14:18 IST 2002 Configure Command: './configure' '--with-apxs=/usr/local/sbin/apxs' '--with-config-file-path=/usr/local/etc' '--enable-versioning' '--with-regex=system' '--without-gd' '--without-mysql' '--with-mhash=/usr/local' '--with-pgsql=/usr/local' '--with-ldap=/usr/local' '--enable-xslt' '--with-xslt-sablot=/usr/local' '--enable-trans-sid' '--with-expat-dir=/usr/local' '--with-iconv=/usr/local' '--prefix=/usr/local' 'i386-portbld-freebsd4.7' (built from FreeBSD ports collection) Testcase: // create an array $array = array(); for ($i = 1; $i < 25; $i++) { array_push($array,"Dublin $i"); } // randomise it $rand_array = array(); srand ((float) microtime() * 10000000); foreach (array_rand($array,sizeof($array)) as $index) { array_push($rand_array,$array[$index]); } // get it sorted by string $array_sorted_str = $rand_array; sort($array_sorted_str,SORT_STRING); // get it sorted numerically $array_sorted_num = $rand_array; sort($array_sorted_num,SORT_NUMERIC); echo "Original array"; echo "<ul>"; foreach ($array as $v) { echo "<li>$v</li>"; } echo "</ul>"; echo "Randomised array"; echo "<ul>"; foreach ($rand_array as $v) { echo "<li>$v</li>"; } echo "</ul>"; echo "array sorted by string"; echo "<ul>"; foreach ($array_sorted_str as $v) { echo "<li>$v</li>"; } echo "</ul>"; echo "array sorted numerically"; echo "<ul>"; foreach ($array_sorted_num as $v) { echo "<li>$v</li>"; } echo "</ul>"; I would expect the numeric sort to give me Dublin 1, Dublin 2...Dublin 11,Dublin 12...Dublin 20 etc. While it does change the array, it appears to do so in a random fashion (at least I cannot understand it). Tadgh Previous Comments: ------------------------------------------------------------------------ [2002-04-28 08:03:53] [EMAIL PROTECTED] i have the same problem : using 6 array : $years, $months, $ids, $titles, $urls, $dates and doing : $ar = array($years, $months, $ids, $titles, $urls, $dts); array_multisort($ar[0], SORT_DESC, SORT_NUMERIC, $ar[1], SORT_NUMERIC, SORT_DESC, $ar[2], $ar[3], $ar[4], $ar[5]); which results "Warning: Array sizes are inconsistent in ...". even with SORT_REGULAR it gives the same error. but it sorts them which is pretty funny :) i suppress it with @ and it sorts them without showing warnings - the only way it works p.s. it shwo that warning from time to time - not always. ------------------------------------------------------------------------ [2001-10-21 01:51:13] [EMAIL PROTECTED] Can not reproduce with PHP 4.1.0RC1. --Jani ------------------------------------------------------------------------ [2001-08-19 18:57:49] [EMAIL PROTECTED] If asort() is used with the sort flag SORT_NUMERIC and the values ar non numeric, the sort order of those values should remain unchanged in principle. But in arrays with few of such non numeric items (app. < 10), the first item is generally moved to the bottom, while in arrays with more items, one element from somewhere in the middle is moved to the top. example: $q = array(1=>'A',2=>'B',3=>'C',4=>'D',5=>'E'); asort($q,SORT_NUMERIC); produces the value sequence B,C,D,E,A ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=12848&edit=1