0

我想生成五个单个随机数,也想对这些数字进行排序。所以,我做了一个脚本如下。因为,我对 PHP 非常熟悉。我做了一个很长的脚本。无论如何要缩短此代码;所有帮助将不胜感激。

没有 sort() 和 asort() 函数

我的代码;

<?php
$a = mt_rand(0,9); 
$b = mt_rand(0,9); 
$c = mt_rand(0,9); 
$d = mt_rand(0,9); 
$e = mt_rand(0,9); 

$array=array($a,$b,$c,$d,$e);

echo "Unsorted array is: ";
echo "<br />";
print_r($array);


for($j = 0; $j < count($array); $j ++) {
for($i = 0; $i < count($array)-1; $i ++){

    if($array[$i] > $array[$i+1]) {
        $temp = $array[$i+1];
        $array[$i+1]=$array[$i];
        $array[$i]=$temp;
    }       
}
}
echo "<br />";
echo "Sorted Array is: ";
echo "<br />";
print_r($array);

?>
4

7 回答 7

2

这是一个不需要排序的解决方案。假设你想要它从低到高。 编辑:当然,如果您想将数字限制在 0 到 9 之间,这不起作用......您可以调整添加到 $n 的金额以获得您想要的。也许$n=mt_rand(0,2)

$a = array();
for ($i=0; $i<5;++$i) {
 $n = mt_rand(0, 9);
 if ($i != 0) {
   $n += $a[$i-1];
 }
 array_push($a, $n);
}
于 2013-09-12T05:02:41.943 回答
1
<?php
$a = mt_rand(0,9); 
$b = mt_rand(0,9); 
$c = mt_rand(0,9); 
$d = mt_rand(0,9); 
$e = mt_rand(0,9); 

$array=array($a,$b,$c,$d,$e);

echo "Unsorted array is: ";
echo "<pre>";
print_r($array);
echo '</pre>';

asort($array);

echo "<br />";
echo "Sorted Array is: ";
echo "<pre>";
print_r($array);
echo '</pre>';
?>

在此处输入图像描述

于 2013-09-12T05:00:17.330 回答
1
$array=array($a,$b,$c,$d,$e);

echo "Unsorted array is: ";
echo "<br />";
print_r($array);

sort($array);

print_r($array);
于 2013-09-12T05:01:11.047 回答
0

您可以使用 PHP 的内置数组排序函数之一来执行此操作。

http://php.net/manual/en/array.sorting.php

好像你想要的是http://www.php.net/manual/en/function.rsort.php

如果您想掌握自己的手工技能,请告诉我。

于 2013-09-12T05:01:08.733 回答
0

你可以这样做

$array = array();

$array2 = array();

for($i=0;$i<5;$i++){

    $array[$i]= mt_rand(0,9);
    $array2[$i] = $array[$i];
    $j=$i;
    while($j>0 && $array[$j]<$array[$j-1])
    {
        $temp = $array[$j];
        $array[$j]=$array[$j-1];
        $array[$j-1]=$temp;
        $j--;


    }
}
print_r($array2);
print_r($array);

上面的排序是插入排序。

现在 $array2 代表未排序的数组, $array 代表已排序的数组。我也对 while 循环进行了轻微的编辑。请检查这个。

于 2013-09-12T05:02:56.237 回答
0

使用循环生成值,然后使用sort函数对数组进行排序:

$num_rand_values = 5;

for($i = 0; $i < $num_rand_values; $i++)
  $array[] = mt_rand(0,9);

echo "Unsorted array is: ";
echo "<br />";
print_r($array);

sort($array);

print_r($array);

演示

于 2013-09-12T05:04:20.633 回答
0
$array=array();
for($a = 1; $a<= 5; $a++) {
    $array[] = mt_rand(0,9);
}
echo "un sorted array";
print_r($array);

sort($array);
echo "sorted array";
print_r($array);

结果

un sorted array
Array
(
    [0] => 0
    [1] => 3
    [2] => 6
    [3] => 2
    [4] => 1
)
sorted array
Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 6
)
于 2013-09-12T05:59:34.193 回答