ID:               29907
 Updated by:       [EMAIL PROTECTED]
 Reported By:      benjamin dot lewis at samail dot net
-Status:           Closed
+Status:           Bogus
 Bug Type:         Arrays related
 Operating System: redhat
 PHP Version:      4.3.7
 New Comment:

Not a bug in PHP then, marking as Bogus.


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

[2004-09-02 05:47:03] benjamin dot lewis at samail dot net

the problem is with sorting  with usort where the result of sorting
with the length_and_depth function which uses an OR in the condition,
gives strange results conpared with sorting on the two conditions
alone.

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

[2004-08-31 08:53:33] [EMAIL PROTECTED]

Try to reduce the code so we can understand the problem without having
to read huge and tangled scripts.
Btw, 4.3.7 is not the current stable version, so you'd better update
it.

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

[2004-08-31 08:50:46] benjamin dot lewis at samail dot net

usort

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

[2004-08-31 08:48:02] benjamin dot lewis at samail dot net

Description:
------------
cases length and value give the expected results, but when mixed in the
case of length_and_value it gives unexpected results.

Sorry for posting more than 20 lines i don't have an open server to
post it to.

Ben

Reproduce code:
---------------
<?php

$doesntwork = array(
'd1_b_000_000_0_b_000_001_0_b_000_001_0', 
'd1_b_000_000_0_b_000_001_0_b_001_001_0', 
'd1_b_000_000_0_b_000_001_0_b_000_002_0', 
'd1_b_000_000_0_b_000_001_0_b_001_002_0', 
'd1_b_000_000_0_b_000_001_0_b_001_003_0', 
'd1_b_000_000_0_b_000_001_0_b_000_004_0_b_000_000_0', 
'd1_b_000_000_0_b_000_001_0_b_000_004_0_b_000_001_0', 
'd1_b_000_000_0_b_000_001_0_b_000_004_0_b_000_002_0', 
'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_000_001_0', 
'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_002_001_0_b_000_000_0',

'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_002_001_0_b_000_001_0',

'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_002_001_0_b_000_002_0',

'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_000_002_0' ,
'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_002_002_0_b_000_000_0',

'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_002_002_0_b_000_001_0',

'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_002_002_0_b_000_002_0',

'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_000_003_0', 
'd1_b_000_000_0_b_000_001_0_b_000_005_0_b_000_001_0_b_000_004_0'
);

function value($a, $b)
{
        if($a < $b)     return -1;
        else                                                            return 1;
}

function length($a, $b)
{
        if(strlen($a) < strlen($b))     return -1;
        else                                                            return 1;
}

function length_and_value($a, $b)
{
        if(strlen($a) < strlen($b) || $a < $b)  return -1;
        else                                                            return 1;
}

if(is_array($doesntwork))
{
        foreach($doesntwork as $id) echo '<br>'.$id;
        echo '<hr>';

        usort($doesntwork, 'length');

        foreach($doesntwork as $id) echo '<br>'.$id;
        echo '<hr>';

        usort($doesntwork, 'value');

        foreach($doesntwork as $id) echo '<br>'.$id;
        echo '<hr>';

        usort($doesntwork, 'length_and_value');

        foreach($doesntwork as $id) echo '<br>'.$id;
        echo '<hr>';
}

?>



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


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

Reply via email to