搜索页面功能的while循环内的Continue语句

Posted

技术标签:

【中文标题】搜索页面功能的while循环内的Continue语句【英文标题】:Continue statement inside while loop for search page feature 【发布时间】: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++;


?>

【问题讨论】:

【参考方案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_search 和in_array 在数组中查找元素,而不是重新发明***。

【讨论】:

以上是关于搜索页面功能的while循环内的Continue语句的主要内容,如果未能解决你的问题,请参考以下文章

如果函数内部的条件失败,则跳过 bash while 循环

运算符及while初识

C语言break,continue的区别

Python入门教程第20篇 continue语句

Delphi中exitbreakcontinue等跳出操作的区别

Delphi中exitbreakcontinue等跳出操作的区别