这是我的问题的一个模拟示例。
' for循环'如果重要的话,将包含在while循环中。
下面的代码应该比较每个数组的每个元素并回显出相同的元素。在这种情况下,' Fat'。
然而,代码无效,我无法弄清楚原因。我确定这是一个简单的修复,但我似乎无法找到它。
$searchValue="Bob Is Fat";
$explode = explode(' ', $searchValue); //turns $searchValue into an array
$tags_cnt = count($explode); //counts elements in the array
$result_tag = array("Volvo", "Skinny", "Fat"); //creates an array
$row_cnt = count($result_tag); //counts elements in array
for($i=0; $i<$tags_cnt-1; $i++) {
for($x=0; $x<$row_cnt-1; $x++) {
if ($result_tag[$x] == $explode[$i]) {
echo $explode[$i];
}
} //2 forloop
} //1 forloop
答案 0 :(得分:2)
删除-1,$tags_cnt-1
的值为2,当值$i
的值为0时,在第二个循环中,$i
的值为1,条件说循环一直工作到$i<$tags_cnt
所以,在第二个循环1&lt; 2中是最后一个循环因为在下一个循环中不与条件匹配。
<?php
$searchValue="Bob Is Fat";
$explode = explode(' ', $searchValue); //turns $searchValue into an array
$tags_cnt = count($explode); //counts elements in the array
$result_tag = array("Volvo", "Skinny", "Fat"); //creates an array
$row_cnt = count($result_tag); //counts elements in array
for($i=0; $i<$tags_cnt; $i++) {
for($x=0; $x<$row_cnt; $x++) {
if ($result_tag[$x] == $explode[$i]) {
echo $explode[$i];
}
} //2 forloop
} //1 forloop
?>
或者在你的第一次:
for($i=0; $i<=$tags_cnt-1; $i++)
在第二个:
for($x=0; $x<=$row_cnt-1; $x++)
希望对你有用。
答案 1 :(得分:1)
尝试使用foreach来消除数组键问题
foreach($explode as $explodeValue){
foeach($result_tag as $tag){
if($tag == $explodeValue){
echo $explodeValue;
}
}
}
我认为这应该有用。
答案 2 :(得分:0)
为什么你需要循环?
$searchValue = "Bob Is Fat";
$explode = explode(' ', $searchValue);
$result_tag = array("Volvo", "Skinny", "Fat");
var_dump(array_intersect($explode, $result_tag));