我不完全理解PHP如何分配,所以我不知道我是否犯了错误,或者如果这是一个错误。这里的usort()是间歇性地清零数组的头部或尾部。usort覆盖阵列的头部还是尾部?
class foo
{
public $idx;
public $data;
}
function compare_foos ($a, $b)
{
if ($a->data == $b->data)
return 0;
elseif ($a->data < $b->data)
return -1;
else
return 1;
}
$mylist = Array();
for ($i=0; $i < 10; ++$i)
{
$mylist[$i] = new foo();
$mylist[$i]->idx = $i;
$mylist[$i]->data = rand() % 20;
}
print_r ($mylist);
usort ($mylist, compare_foos);
echo "<HR>";
print_r ($mylist);
现场示例:http://codepad.org/fOdA0hca。你的意思是什么*清除头部或尾部*?排序似乎按预期工作。 – 2011-05-28 13:14:30
此代码正常工作。 'usort($ mylist,compare_foos);'''compare_foos',它只是字符串,不是常量。 – 2011-05-28 13:16:23
这可能是我的PHP安装中的一个错误。有时它会用null(无数据)替换第一个或最后一个元素。我不知道具体的PHP术语。它每次工作,如果我自己编码排序func。我只是想知道我是否正确地分配阵列,就这些。既然你说我是,那肯定是本地系统中的一个bug。 – gecko 2011-05-28 13:24:42