搜索

首页  >  问答  >  正文

循环遍历数组中的每个值,然后对这些值使用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粉513316221572 天前747

全部回复(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
  • 取消回复