#20409 [Opn->Bgs]: SORT_NUMERIC and non-numeric values

From: Date: Wed, 13 Nov 2002 15:48:51 +0000
Subject: #20409 [Opn->Bgs]: SORT_NUMERIC and non-numeric values
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-24812@lists.php.net to get a copy of this message
ID: 20409 User updated by: tadgher@yahoo.com Reported By: tadgher@yahoo.com -Status: Open +Status: Bogus Bug Type: Arrays related Operating System: FreeBSD PHP Version: 4.2.3 New Comment: Sorry - I've just seen natsort()! Previous Comments: ------------------------------------------------------------------------ [2002-11-13 09:20:17] tadgher@yahoo.com This is the same problem discussed in bug #12848 (which is closed - could I have reopened it?). 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: <?php // 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 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=20409&edit=1

« previous php.bugs (#24812) next »