如何使用for循环逐元素地比较两个数组?

时间:2014-11-29 02:44:00

标签: php arrays for-loop

这是我的问题的一个模拟示例。

' 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

3 个答案:

答案 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));