Req->Bug #40334 [Opn->Csd]: natsort() does not work for some numbers
| From: | cmb@php.net | Date: | Mon, 13 Jun 2016 13:27:31 +0000 |
| Subject: | Req->Bug #40334 [Opn->Csd]: natsort() does not work for some numbers | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-201571@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=40334&edit=1
ID: 40334
Updated by: cmb@php.net
Reported by: den4b at mail dot ru
Summary: natsort() does not work for some numbers
-Status: Open
+Status: Closed
-Type: Feature/Change Request
+Type: Bug
-Package: Feature/Change Request
+Package: *General Issues
Operating System: Windows XP SP2
PHP Version: 5.2.0
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
This issue has been already resolved as of PHP 5.2.10, see
<https://3v4l.org/QocSD>.
Previous Comments:
------------------------------------------------------------------------
[2007-06-25 11:36:31] den4b at mail dot ru
Author meant that the leading zeros are not ignored ONLY for fractional parts. For example:
1.001 < 1.002 < 1.010 < 1.02 < 1.1 < 1.3
But in any other cases, leading zeros are ignored. For example:
pic2
pic02
pic02a
pic3
pic100
pic100a
pic120
pic121
pic02000
x2-y7
x2-y08
x8-y8
------------------------------------------------------------------------
[2007-06-25 10:27:15] dennis at d23 dot nl
The text clearly states:
"Leading zeros are not ignored, which tends to give more reasonable results on decimal
fractions"
Strangely the example at http://sourcefrog.net/projects/natsort/example-out.txt
does not comply with the above statement.
Actual results comply with the statement, so not a bug it seems, more a feature request. I can see
the use for a toggle to ignore leading zeroes.
------------------------------------------------------------------------
[2007-02-05 20:44:32] den4b at mail dot ru
LOL, you are simply amazing, you know that?!!
That's exactly where I pointed you to! And now look at their example: http://sourcefrog.net/projects/natsort/example-out.txt
Especially note these fragments:
---------------
pic100
pic100a
pic120
pic121
pic02000
---------------
x2-g8
x2-y7
x2-y08
x8-y8
---------------
Do "pic02000" and "x2-y08" come first because of the zero?!
Is there anybody else (professional enough) to address this issue, or will I have to argue with you
for the rest of the year? ;-)
Some of the implementations listed on that site contain ERRORS! And I'm afraid PHP has adopted
the wrong implementation.
------------------------------------------------------------------------
[2007-02-05 20:25:53] tony2001@php.net
Start with this link http://sourcefrog.net/projects/natsort/
if you don't understand what "natural sort order" means.
------------------------------------------------------------------------
[2007-02-05 20:18:44] den4b at mail dot ru
OMFG man.. can't you see it?!!
Natural order sort algorithm meant to treat NUMBERS as NUMERIC values, thus comparing them
NUMERICALLY, NOT AS CHARACTERS (like you are saying).
02 = 2
1 = 1
Does 2 comes before 1 ?!!
It gets even better...
02000 = 2000
Does 2000 comes before 1 ?!!
I think left alignment misleads you, so I've added an extra space in front of 1. What will you
say this time?
Reproduce code:
---------------------
$a = array('a 02', 'a 1', 'a 02000', 'a 03');
natsort($a);
print_r($a);
Result (incorrect)
---------------------
Array
(
[0] => a 02
[2] => a 02000
[3] => a 03
[1] => a 1
)
Expected result:
---------------------
Array
(
[1] => a 1
[0] => a 02
[3] => a 03
[2] => a 02000
)
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=40334
--
Edit this bug report at https://bugs.php.net/bug.php?id=40334&edit=1