搜索页面功能的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 循环更好的解决方案。它不需要cointinue
或break
点,也不需要计数来遍历数组。
在这种情况下,while 循环似乎没用。
即:
foreach ($states as $state)
if ($state == $search)
echo $state."<br />";
输出:
TN
但最好的解决方案是array_search()
。
希望对你有帮助。
【讨论】:
【参考方案5】:你陷入了无限循环。
当 0
在 0
....... ....... .......
而且它会永远持续下去你一直在检查 0 索引。
一旦找到匹配项,您应该使用 break 退出 while 循环,而不是增加计数。同样在使用continue
之前,您应该增加$count
变量。你的while循环条件应该是<
而不是<=
,因为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语句的主要内容,如果未能解决你的问题,请参考以下文章