新手疑惑

請各位強者幫小弟解惑
我想印出這幾個數字裡最大的數
我是想說把所有數字由小到大排列好後
再印出最後一個數
但我這樣打印不出來是為甚麼
<!doctype>
<html>
<head>
<metacharset="utf-8">
</head>
<body>
<?php
$scores = array(85,64,56,99,78,66);
for($i=0;$i<6;$i++){
if($scores[$i]>$scores[$i+1]){
$temp = $scores[$i];
$scores[$i] = $scores[$i+1];
$scores[$i+1] = $temp;
}
}
echo $scores[5];
?>
</body>
</html>

評論

  • 你的程式在 $i = 5 的時候會出錯
    if($scores[5] > $scores[6]) {
    不過就算改成
    for ($i = 0; $i < 5; $i++) {
    你的陣列結果還是不會由小到大排序
    這只會把陣列最大值放在最後一個位置
    照你的邏輯應該是這樣

    $scores = array(85, 64, 56, 99, 78, 66);

    for ($last = 5; $last > 0; $last--) {
    for ($index = 0; $index < $last; $index++) {
    if ($scores[$index] > $scores[$index + 1]) {
    $temp = $scores[$index];
    $scores[$index] = $scores[$index + 1];
    $scores[$index + 1] = $temp;
    }
    }
    }
    echo $scores[5];

    不過可以考慮下面更簡短的程式碼

    <?php
    /** @var array $scores 分數 */
    $scores = array(85,64,56,99,78,66);
    // 升冪排序陣列
    sort($scores);
    // 顯示最後一筆
    echo $scores[count($scores) - 1];
    ?>
Sign In or Register to comment.