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