【问题标题】:Continue statement inside while loop for search page feature搜索页面功能的while循环内的Continue语句
【发布时间】:2016-11-03 05:04:59
【问题描述】:

我不明白为什么这个循环不起作用。

此循环的目的只是跳过数组中不等于给定搜索词(在本例中为 TN)的每个值(在本例中为 0-2)。所以输出应该是

TN

不应该

IN
TN
OH

这是我的代码:

<?php

$states = array('IN', 'TN', 'OH');
$search = 'TN';

$count = 0;
while($count <= count($states)){
    if($states[$count] != $search){
        continue;
    }

    echo $states[$count]."<br/>";
    $count++;
}

?>

【问题讨论】:

    标签: php loops while-loop continue


    【解决方案1】:

    移动计数++,使其始终递增并保持乐观:

    while($count < count($states)){
      if($states[$count] == $search){
        echo $states[$count]."<br/>";
      }
      $count++;
    }
    

    【讨论】:

    • 但是如果我在状态回显之前进行增量,不会跳过第一个设置为 0 的值吗?
    • 我可以推荐array_search吗? $pos = array_search($search, $states); echo $states[$pos]."
      ";
    • 我认为我应该是 while($count
    【解决方案2】:

    使用array_search

    在数组中搜索值“TN”并返回其键

        <?php
    
           $states = array('IN', 'TN', 'OH'); 
           $search = 'TN'; 
    
            $index = array_search($search, $states); 
    
            if($index && $states[$index])
            {
    
             echo $states[$index];
    
            }
    
         ?>
    

    【讨论】:

    • 可以在我的while循环中使用... if(!array_search($search, $states)){continue;} 吗?
    • 不,使用 array_search 你不需要循环。您只需通过搜索直接找到您需要的内容。 $pos = array_search($search, $states); echo $states[$pos]."
      ";
    • 不需要while循环
    【解决方案3】:

    array_search 是最适合您的解决方案

    <?php
    $states = array('IN', 'TN', 'OH');
    $search = 'TN';
    $searcharr = array_search($search, $states); 
    var_dump($searcharr);
    

    【讨论】:

      【解决方案4】:

      我认为 foreach 循环将是比 while 循环更好的解决方案。它不需要cointinuebreak 点,也不需要计数来遍历数组。

      在这种情况下,while 循环似乎没用。

      即:

      foreach ($states as $state) {
          if ($state == $search) {
              echo $state."<br />";
          }
      }
      

      输出:

      TN

      但最好的解决方案是array_search()

      希望对你有帮助。

      【讨论】:

        【解决方案5】:

        你陷入了无限循环。

        当 0

        在 0

        ....... ....... .......

        而且它会永远持续下去你一直在检查 0 索引。

        一旦找到匹配项,您应该使用 break 退出 while 循环,而不是增加计数。同样在使用continue 之前,您应该增加$count 变量。你的while循环条件应该是&lt;而不是&lt;=,因为count返回3,你的$states数组索引是0,1,2

        $states = array('IN', 'TN', 'OH');
        $search = 'TN';
        
        $count = 0;
        while($count < count($states)){
            if($states[$count] != $search){
                $count++;
                continue;
            }
        
            echo $states[$count]."<br/>";
            break;
        }
        

        您可以检查array_searchin_array 在数组中查找元素,而不是重新发明轮子。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-07
          • 2013-08-26
          • 2015-01-18
          • 2015-12-13
          • 2013-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-07
          相关资源
          最近更新 更多