How would you expect the sort function to behave on the following:
array(true, false, 0, 1)?
It is a different way of looking at the same problem and you are likely to hit this anytime you start comparing/sorting different data types.
In general, I don't think it makes very much sense to fix the comparison operator for these special cases.
PHP has always done this kind of type juggling and you would be changing a lot of its behavior.
I suggest that when you do try and sort an array with different kind of data you define your own sorting callback function.
Making special cases for each such case in the compare function will not only change behavior but it will slow down the already "too big for my taste" compare function.
I know it's not the answer John was hoping for (I promised him to look into it more deeply when I'm back from OSCON) but after doing so and thinking about it, I think we'd be going in a direction which wouldn't be good.
I have a feeling this might also not give you the expected behavior for something like array(0, "-1") but I haven't actually ran it.


Andi

At 09:45 PM 7/27/2004 +0200, Marcus Boerger wrote:
Hello John,

Tuesday, July 27, 2004, 9:48:28 PM, you wrote:


> Consider the following:

> <?php $a = array('a', 'b', 'c', 'a'=>0, 'b'=>1, 'c'=>2);
>       sort($a);
>       print_r($a);
?>>

> This produces a bogus output:

> Array
> (
>     [0] => a
>     [1] => b
>     [2] => 0
>     [3] => c
>     [4] => 1
>     [5] => 2
> )


> Notice how 0 and c are switched incorrectly. Attached is a patch to > zend_operators.c that fixes it.


The current order simply makes no sense at all.īThe following though would: 0 a b c 1 2 // zero dirst, then strings then numbers a b c 0 1 2 // strings first, then numbers 0 1 2 a b c // numbers first, then strings

and btw, john you forgot the patch, it is attached here.
The one provided does the 2nd which means we only ensured
0 is treated un the same way other numbers are.

Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to