在Foreach循环中从数组PHP中删除

时间:2014-05-02 13:04:57

标签: php arrays foreach

我有一个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循环获取所有其他产品。有任何想法吗?谢谢!

4 个答案:

答案 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
}
相关问题