继续声明内部while循环搜索页面功能

时间:2016-11-03 05:05:00

标签: php loops while-loop continue

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

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

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++;
}

?>

5 个答案:

答案 0 :(得分:4)

移动计数++,使它总是递增并保持乐观:

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

答案 1 :(得分:2)

使用array_search

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

    <?php

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

        $index = array_search($search, $states); 

        if($index && $states[$index])
        {

         echo $states[$index];

        }

     ?>

答案 2 :(得分:0)

array_search是最适合您的解决方案

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

答案 3 :(得分:0)

你陷入了无限循环。

  

第一次迭代,而0 < 3,如果$ states [0]!='TN'继续下一步   迭代$ count仍为0

     

第二次迭代,而0 < 3,如果$ states [0]!='TN'继续下一步   迭代$ count仍为0

     

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

     

它会永远持续下去你坚持检查0索引。

一旦找到匹配而不是递增计数,你应该使用break退出while循环。在使用$count之前,您应该增加<变量。此外,您的while循环条件应为<=而不是count,因为$states返回3,而您的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; }

$.ajax({
    url: baseUrl + "converse",
    data: {
      'q': text, // The message to send the bot
      'session_id': "123abc",
      'access_token' : accessToken // Authorisation key for using our bot
    },
    dataType: 'json',
    crossDomain: true,
    method: 'POST',

    success: function(data) {
      prepareResponse(data);
    },
    error: function() {
      respond(messageInternalError);
    }
});

您可以查看array_search&amp; in_array在数组中查找元素而不是重新发明轮子。

答案 4 :(得分:0)

我认为foreach循环比while循环更好。它不需要cointinuebreak点,也不需要计算迭代数组。

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

即。 :

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

输出:

  

TN

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

希望它有所帮助。