首页 > 解决方案 > 如何防止foreach PHP中的重复

问题描述

我正在尝试将客户订单备注字段移动到另一个字段组,但由于其他插件覆盖,我也需要覆盖 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 循环中的重复?

标签: phpwordpresswoocommerceforeach

解决方案


您可以维护一个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


推荐阅读