簡體   English   中英

我怎樣才能把它寫成一個 while 循環? PHP

[英]How can i write this as a while loop? PHP

<?php
for ($i=0; $i<10; $i++) {
    $number = mt_rand(1, 100);
    if ($number %2== 0) {
        $result = 'even';
    } else {
        $result = 'odd';
    }
    echo $number.' '.'('.$result.')'.'<br>';
}?>

我想以 while 循環形式編寫它,這是我所得到的。 它只打印一個隨機數,僅此而已。 我在 PHP8.1 上使用 phpStorm 和邊緣瀏覽器。

<?php

$i=0;
while ($i<10) {
  if ($number=mt_rand(1,100)) {
    $result = 'even';
  } else {
    $result = 'odd';
  }
  $i++;
  echo $number.' '.'('.$result.')'.'<br>';
}
    
?>

代碼不起作用的主要原因是您在if()條件內分配了$number = mt_rand(1,100)

所以每次你執行 if then 它都不會比較,但它會繼續分配$number變量。 我已經分離了分配和比較邏輯。

嘗試這個:

<?php

    $i=0;
    while ($i<10) {
        $number = mt_rand(1,100);
        if ($number % 2 == 0) {
            $result = 'even';
        } else {
            $result = 'odd';
        }
        $i++;
        echo $number.' '.'('.$result.')'.'<br>';
    }

我改為 10 以說明情況:您使用的腳本可以生成數字可以重復; 我放的第二個腳本會生成唯一的隨機數(如果需要); 通過取消注釋//$max=100; 並評論$max=10; 第二個腳本將在 1..100 范圍內生成 UNIQUE NUMBERS

  <?php


/*the first script*/    
    $max=100;
    //$max=10;
    
    
    $i=0;
    while ($i<10) {
      if (($number=mt_rand(1,$max))and(($number % 2) ==0)) {
        $result = 'even';
      } else {
        $result = 'odd';
      }
      $i++;
      echo $number.' '.'('.$result.')'.'<br>';
    }
      
    echo '<hr>';
        
    /*the second script : unique numbers*/
    $nrs=range(1,$max);
    $i=-1;while($i++<9){
        $pos=mt_rand(0,count($nrs)-1);
        $nr=$nrs[$pos];
        unset($nrs[$pos]);
        rsort($nrs);
        echo $nr.'-'.(($nr%2)==0?'even':'odd').'<br>';
    }
    
    ?>

我這樣做了: 解決方案同時扣

請檢查我的答案是否對您有幫助。 干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM