0

以下代码循环遍历两个数组,$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”。

有什么建议吗?干杯!

4

2 回答 2

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

于 2013-04-19T15:10:48.293 回答
1

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

于 2013-04-19T15:09:37.813 回答