ID:               29907
 Updated by:       [EMAIL PROTECTED]
-Summary:          stange str comparing results when using usort
 Reported By:      benjamin dot lewis at samail dot net
-Status:           Open
+Status:           Feedback
 Bug Type:         Arrays related
 Operating System: redhat
 PHP Version:      4.3.7
 New Comment:

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.


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

[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