ID:               29907
 User updated by:  benjamin dot lewis at samail dot net
-Summary:          stange str comparing results
 Reported By:      benjamin dot lewis at samail dot net
 Status:           Open
 Bug Type:         Arrays related
 Operating System: redhat
 PHP Version:      4.3.7
 New Comment:

usort


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

[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