以下代码循环遍历两个数组$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'。
有什么建议吗?干杯!
答案 0 :(得分:2)
如果我理解你想要:
foreach($this->userKeyword as $keyword){
if(!(in_array($keyword, $this->userAllergens, true)) {
echo "$keyword";
}
}
您可以使用in_array
功能。请小心,因为布尔标志设置您是否进行严格的比较,并可能导致误导结果。
答案 1 :(得分:1)
使用array_diff,请参阅http://php.net/manual/en/function.array-diff.php。你也可以使用in_array(),array_diff更好