如果值等于从数组中删除项目
Remove item from array if value equals
在 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;
你应该可以做到这一点:
$items = array_filter($order->get_items(), function($item) {
return $item->get_product_id() != 3404;
});
这遍历 $items
并像 foreach
一样将每个值传递给 $item
。如果array_filter
returns的回调一个true
,该值将被保留else dropped.
您甚至可以直接传递 $order->get_items()
而无需将项目提取到数组中。
此外,如果您需要排除多个,如评论中所述,您可以这样做:
$items = array_filter($order->get_items(), function($item) {
return !in_array($item->get_product_id(), [3404, 6890]);
});
在 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;
你应该可以做到这一点:
$items = array_filter($order->get_items(), function($item) {
return $item->get_product_id() != 3404;
});
这遍历 $items
并像 foreach
一样将每个值传递给 $item
。如果array_filter
returns的回调一个true
,该值将被保留else dropped.
您甚至可以直接传递 $order->get_items()
而无需将项目提取到数组中。
此外,如果您需要排除多个,如评论中所述,您可以这样做:
$items = array_filter($order->get_items(), function($item) {
return !in_array($item->get_product_id(), [3404, 6890]);
});