2个foreach语句中的逻辑

时间:2013-04-19 15:05:13

标签: php

以下代码循环遍历两个数组$this->userKeyword$this->userAllergens

foreach($this->userKeyword as $keyword){
    foreach($this->userAllergens as $allergens){
        if($keyword['keywordid'] != $allergens['keywordid']){
            ?>
            <label><?php echo $keyword['name'];?></label>
            <input type="checkbox" name="<?php echo $keyword['name'];?>" value="<?php echo $keyword['keywordid'];?>" /><br />
            <?php
        }
    }
}

如果第一个数组包含'1','2','3','4',第二个数组包含'3'和'4',那么在第二个循环内部和迭代时包含'3',它将显示'1','2'和'4',然后在包含'4'的迭代中将显示'1','2'和'3'。

我的问题是我需要更改代码,以便仅在值不在两个数组中时显示。

所以在这里,我希望'1'和'2'显示但不是'3'和'4'。

有什么建议吗?干杯!

2 个答案:

答案 0 :(得分:2)

如果我理解你想要:

foreach($this->userKeyword as $keyword){
    if(!(in_array($keyword, $this->userAllergens, true)) {
        echo "$keyword";
    }
}

您可以使用in_array功能。请小心,因为布尔标志设置您是否进行严格的比较,并可能导致误导结果。

http://php.net/manual/en/function.in-array.php

答案 1 :(得分:1)

使用array_diff,请参阅http://php.net/manual/en/function.array-diff.php。你也可以使用in_array(),array_diff更好