【发布时间】:2019-01-30 08:15:59
【问题描述】:
在 Woocommerce 订单页面上,我有订单中的项目,我想通过这些项目循环并排除特定项目按产品 ID。
$order->get_order_number();
$items = $order->get_items();
foreach( $items as $key => $value) :
$exclude = $value->get_product_id();
if( in_array($exclude, array('3404') ) {
unset($items[$key]);
}
}
endforeach;
$new_items = array_values($items);
我认为这会遍历原始数组,删除 $item 的 $product_id == 3404 然后重新索引。
我在这里运气不好。有什么想法吗?
已解决 ->
//Filter out colon cleanse duo
$items = array_filter($order->get_items(), function($item) {
return $item->get_product_id() != 3404;
});
//Randomize ids and grab one
shuffle($items);
foreach( $items as $item) :
$product_id = $item->get_product_id();
$product_name = $item->get_name();
break;
endforeach;
【问题讨论】:
-
如果您只需要一个,您应该在设置
$product_name后将foreach留给break;。否则,您一次又一次地遍历所有项目,并获得最后一个条目。 -
哦,就这样? foreach( $items as $item) : $product_id = $item->get_product_id(); $product_name = $item->get_name();休息; endforeach;
-
没错。这将节省“一些性能”。
-
太棒了。我不是开发人员,所以这很棒。我应该查看所有其他自定义函数,看看我是否做了同样的事情。非常感谢,马库斯!
标签: php arrays woocommerce orders unset