如何获取此PHP脚本的输出?

时间:2011-04-12 03:10:11

标签: php

我是关于二维数组的编程和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'); 


?> 

5 个答案:

答案 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成功排序数组。