ID:               40334
 User updated by:  den4b at mail dot ru
 Reported By:      den4b at mail dot ru
-Status:           Bogus
+Status:           Open
 Bug Type:         Arrays related
 Operating System: Windows XP SP2
 PHP Version:      5.2.0
 New Comment:

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
)


Previous Comments:
------------------------------------------------------------------------

[2007-02-05 09:36:06] [EMAIL PROTECTED]

1 coming before 0?
No, that's definitely not the result expected.
0 will always come before 1.

------------------------------------------------------------------------

[2007-02-03 01:11:28] den4b at mail dot ru

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
)

------------------------------------------------------------------------

[2007-02-03 01:05:59] den4b at mail dot ru

Re-opening this bug.

------------------------------------------------------------------------

[2007-02-03 01:03:35] den4b at mail dot ru

They are strings, that's why they are surrounded with ''. If you are
still in doubt - try inserting any string infront of every element,
you'll still see the very same effect!

The natural-order-aware algorithm that is used for comparing strings
has problems. It was addopted from
http://sourcefrog.net/projects/natsort/ - I tested it, and it produced
the very same bogus results!

------------------------------------------------------------------------

[2007-02-02 23:09:25] [EMAIL PROTECTED]

These numbers are called octal.
http://www.php.net/manual/en/language.types.integer.php

------------------------------------------------------------------------

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
    http://bugs.php.net/40334

-- 
Edit this bug report at http://bugs.php.net/?id=40334&edit=1

Reply via email to