首頁  >  問答  >  主體

循環遍歷數組中的每個值,然後對這些值使用switch語句。

<p>我是PHP的新手,我想知道是否有人可以幫助我。 </p><p>我有一個數組,數組中的值由另一個函數決定,但是數組的值總是"warning"、"critical"或"ok",數組的長度也可以是任意的。例如:</p><p><br /></p> <p><code>$hold = array ( 'warning','warning','critical','ok');</code></p> <p>如何使用switch函數和for循環函數,以便循環遍歷數組中的每個值並列印出相應的訊息(無論該訊息在數組中出現多少次,例如警告在數組中出現兩次,那麼警告應該打印兩次)。 </p><p>我嘗試了下面的程式碼,但它總是印出未知。 </p><p><br /></p> <pre class="brush:php;toolbar:false;">switch($hold){ case 'ok': echo 'everyhting is ok'; break; case 'warning': echo 'it is a warning'; break; case 'critical': echo 'its critical'; break; default: echo 'unknown'; };</pre> <p>謝謝</p>
P粉513316221P粉513316221468 天前695

全部回覆(1)我來回復

  • P粉295616170

    P粉2956161702023-07-31 11:28:23

    寫一個switch語句需要相當多的程式碼。為什麼不使用另一個陣列來將訊息與$hold中的狀態關聯起來呢?就像這樣:

    $hold = ['warning', 'warning', 'critical', 'ok', 'this is bad'];
    
    $messages =  ['warning'  => 'it is a warning',
                  'critical' => 'its critical', 
                  'ok'       => 'everyhting is ok'];
    
    foreach ($hold as $status) {
        echo ($messages[$status] ?? 'unknown') . PHP_EOL;
    }

    如您所見,我使用了foreach()迴圈來遍歷$hold。

    我使用了一個關聯數組和特殊的Null合併運算子。如果您不喜歡這種方式,您可以使用您的switch語句。

    示範請參考:https://3v4l.org/jNkfF

    #

    回覆
    0
  • 取消回覆