为什么这个数组只返回 true ?, sort() 不起作用......
<?
for ($f = 0; $f < $numDados; $f++) {
$numRand = rand(1, 10);
$dataNum[] = $numRand;
}
$sortNum = sort($dataNum);
echo $sortNum;
?>
<?php
$numDados=10;
for ($f = 0; $f < $numDados; $f++) {
$numRand = rand(1, 10);
$dataNum[] = $numRand;
}
$sortNum = sort($dataNum);
print_r($dataNum) ;
?>
听着,排序后的数据保存在 'sort()' 函数的参数中。如果 sort() 函数成功执行,则返回 1 为真。因此 $sortNum 包含 1 而不是排序数组。排序后的数组在 $dataNum 中分配。你应该再次使用 print_r() 函数而不是 echo 来打印数组。在这里我添加了额外的行 $numDados=10; 以避免错误。如果您在代码中为 $numDados 分配了一个值,请删除此行,您将获得预期的输出。
PHP 有各种各样像这样奇怪(不一致)的东西。
$data = array(3,2,1); // => Array (3, 2, 1)
sort($data); // => true
print_r($data); // => Array (1, 2, 3)
RTLM:http://php.net/sort
sort() 进行就地排序,并修改原始数组。它不返回已排序的副本。
$arr = array(....);
sort($arr);
print_r($arr);
您也不能echo
使用数组。那只会给你文字文本Array
。
看手册: http: //php.net/sort
布尔排序(数组 &$array [, int $sort_flags = SORT_REGULAR])
它返回一个关于成功和失败的布尔值。并通过引用获取数组。
所以数组$dataNum
将被排序。您分配给的返回值$sortNum
是true
输出为1
.
此外,您不能打印阵列、使用print_r
或var_dump
查看其内容。
尝试这个
<?php
for ($f = 0; $f < $numDados; $f++) {
$numRand = rand(1, 10);
$dataNum[] = $numRand;
}
sort($dataNum);
echo "<pre/>"; print_r($dataNum);
?>
它已经排序(返回 true,因为 sort() 成功地对您传递的数组进行了排序),如果您想查看它,您可以执行 var_dump($sortNum) 或循环并打印所有内容。
foreach($sortNum as $num)
echo $num;