我是关于二维数组的编程和PHP学习的新手。
当我在下面运行此代码时,它只是给我一个空白页面。当我在函数调用前面放置一个echo,就像这个echo usort($a, 'mysort1');
一样,页面显示我1(我不知道为什么)。
我真正想看的是数组排序后的输出。
做var_dump($a);
不是我想要的。如何显示函数的结果?
如何?谢谢,如果你能提供帮助。
<?php
$a = array (
array ('key1' => 940, 'key2' => 'blah'),
array ('key1' => 23, 'key2' => 'this'),
array ('key1' => 894, 'key2' => 'that')
);
function mysort1($x, $x) {
return ($x['key1'] > $y['key']);
}
usort($a, 'mysort1');
?>
答案 0 :(得分:2)
对于初学者,我认为你的比较函数中有两个拼写错误:
//should be $y not $x
function mysort1($x, $y) {
return ($x['key1'] > $y['key1']); // Should be $y['key1']
}
接下来,usort对数组进行排序,在成功时返回TRUE,否则返回FALSE,这就是当你回显它的返回值时看到1的原因。
尝试:
print_r($a);
显示已排序的数组。
答案 1 :(得分:1)
把它作为最后一行...... var_dump($ a);它是一种快速查看数组内容的方法。
答案 2 :(得分:1)
添加:
print_r($a);
之后
如果要使用HTML很好地输出数据,可以按如下方式使用foreach循环:
echo "<ul>";
foreach ($a as $key => $value)
{
echo "<li>key: ", $key, " value: ", $value, "</li>";
}
echo "</ul>";
如果您愿意,可以使用与表类似的东西。
usort实际上会对您传递给它的数组进行排序。换句话说,它不会返回已排序的数组,而是在您传递它的同一个数组上执行排序,因为它是通过引用传递的。如果你看这里:http://php.net/manual/en/function.usort.php你会看到参数前面有一个&符号。 usort的返回值表示成功或失败。同样,您可以在手册中看到这一点。
答案 3 :(得分:1)
您正在打印function usort的返回值,而不是数组的内容。相反,在调用usort后尝试给print_r一个镜头。
答案 4 :(得分:0)
在usort行之后添加
var_dump( $a );
您的页面只打印“1”,因为它表示usort成功排序数组。