Как предотвратить дублирование в пределах foreach PHP - PullRequest
2 голосов
/ 14 апреля 2020

Я пытаюсь переместить поле примечаний к заказу клиента в другую группу полей, но из-за других переопределений плагинов мне нужно также переопределить файлы шаблонов 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" to: " mytheme / woocommerce / checkout / review-order. php".

Теперь я получаю дублированные поля, как предотвратить дублирование внутри foreach l oop?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2020

Вы можете сохранить 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 голос
/ 14 апреля 2020

Вы можете использовать array_unique () ваш код будет выглядеть так:

foreach ( array_unique($checkout->get_checkout_fields( 'order' )) as $key => $field ) :
    woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); 
endforeach;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...