如何防止foreach PHP中出现重复项

时间:2020-04-14 13:54:02

标签: php wordpress woocommerce foreach

我正在尝试将客户订单注释字段移至另一个字段组,但是由于其他插件覆盖,我也需要覆盖WooCommerce模板文件,因此需要移动以下代码:

foreach ( $checkout->get_checkout_fields( 'order' ) as $key => $field ) :
    woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); 
endforeach;

来源:“ mytheme / woocommerce / checkout / form-shipping.php
到:“ mytheme / woocommerce / checkout / review-order.php ”。

现在我要获取重复的字段,如何防止在foreach循环中重复?

2 个答案:

答案 0 :(得分:3)

您可以维护array来跟踪您已经看到的字段,以免再次添加。

$fields_seen = [];
foreach ( $checkout->get_checkout_fields( 'order' ) as $key => $field ) :
    if(!in_array($field, $fields_seen)) {
        woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); 
        $fields_seen[] = $field;
    }
endforeach;

in_array的参考页:PHP in_array

答案 1 :(得分:1)

您可以使用array_unique() 您的代码将如下所示:

foreach ( array_unique($checkout->get_checkout_fields( 'order' )) as $key => $field ) :
    woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); 
endforeach;