-1

为什么这个数组只返回 true ?, sort() 不起作用......

<?
for ($f = 0; $f < $numDados; $f++) {
$numRand = rand(1, 10);
$dataNum[] = $numRand;
}
$sortNum = sort($dataNum);
echo $sortNum;
?>
4

6 回答 6

3
<?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 分配了一个值,请删除此行,您将获得预期的输出。

于 2013-06-05T15:15:11.767 回答
2

PHP 有各种各样像这样奇怪(不一致)的东西。

$data = array(3,2,1);  // => Array (3, 2, 1)
sort($data);           // => true
print_r($data);        // => Array (1, 2, 3)
于 2013-06-05T15:00:18.023 回答
2

RTLM:http://php.net/sort

sort() 进行就地排序,并修改原始数组。它不返回已排序的副本。

$arr = array(....);
sort($arr);
print_r($arr);

您也不能echo使用数组。那只会给你文字文本Array

于 2013-06-05T14:57:04.723 回答
2

看手册: http: //php.net/sort

布尔排序(数组 &$array [, int $sort_flags = SORT_REGULAR])

它返回一个关于成功和失败的布尔值。并通过引用获取数组。

所以数组$dataNum将被排序。您分配给的返回值$sortNumtrue输出为1.

此外,您不能打印阵列、使用print_rvar_dump查看其内容。

于 2013-06-05T14:57:12.040 回答
1

尝试这个

   <?php
      for ($f = 0; $f < $numDados; $f++) {
      $numRand = rand(1, 10);
      $dataNum[] = $numRand;
     }
     sort($dataNum);
     echo "<pre/>"; print_r($dataNum);
   ?>
于 2013-06-05T16:03:17.660 回答
1

它已经排序(返回 true,因为 sort() 成功地对您传递的数组进行了排序),如果您想查看它,您可以执行 var_dump($sortNum) 或循环并打印所有内容。

foreach($sortNum as $num)
echo $num;
于 2013-06-05T14:59:11.277 回答