我不明白为什么这个循环不起作用。
此循环的目的只是跳过数组的每个值(在本例中为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++;
}
?>
答案 0 :(得分:4)
移动计数++,使它总是递增并保持乐观:
while($count < count($states)){
if($states[$count] == $search){
echo $states[$count]."<br/>";
}
$count++;
}
答案 1 :(得分:2)
在数组中搜索值“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循环更好。它不需要cointinue
或break
点,也不需要计算迭代数组。
在这种情况下,while循环似乎没用。
即。 :
foreach ($states as $state) {
if ($state == $search) {
echo $state."<br />";
}
}
输出:
TN
但最好的解决方案仍然是array_search()
。
希望它有所帮助。