我有一个php foreach循环,它在我的商店中显示我的所有产品。代码如下所示:
<?php foreach ($products as $product) { ?>
// getting products here
<?php } ?>
有些产品我希望不会出现在那个循环中,我有id的代码,所以我编辑了Foreach循环:
<?php $ids = array(564,365,66,234,55); ?>
<?php foreach ($products as $product) { ?>
<?php if(in_array($product['product_id'],$ids)) { ?>
//getting products here
<?php } ?>
<?php } ?>
这恰恰与我想做的相反。我知道它会。但我认为有一些方法可以扭转这一局面,只隐藏那些产品。我想知道是否有从产品阵列中删除那些产品ID,然后继续php循环获取所有其他产品。有任何想法吗?谢谢!
答案 0 :(得分:6)
简单地否定条件:
if(!in_array($product['product_id'],$ids))
答案 1 :(得分:3)
如果ID不在列表中,您需要使用逻辑NOT运算符!
来仅执行代码。
<?php $ids = array(564,365,66,234,55); ?>
<?php foreach ($products as $product) { ?>
<?php if(!in_array($product['product_id'],$ids)) { ?>
// do operation
<?php } ?>
<?php } ?>
答案 2 :(得分:2)
只需使用!
所以我们说如果数组不在数组中,那么显示它们就很酷。
<?php $ids = array(564,365,66,234,55); ?>
<?php foreach ($products as $product): ?>
<?php if(!in_array($product['product_id'],$ids)):?>
//show products that are not in array
<?php endif ?>
<?php endforeach ?>
答案 3 :(得分:2)
如果您打算稍后使用此缩减版,则可以使用array_filter
。
$filtered = array_filter($products, function($x) use($ids) {
return !in_array($x['product_id'], $ids);
});
foreach ($filtered as $product) {
// do operation
}