如何通过参数值在php中过滤对象数组?

时间:2018-09-10 12:06:05

标签: php wordpress woocommerce

我是php的新手,我试图过滤字段数组,使其仅包含具有必需属性的字段。

在javascript中,我可以通过以下方式简单地做到这一点:

fields.filter(field => field.required)

但是我不知道如何在php中做到这一点。

我对php语法非常陌生,并且在实现array_filter时未成功。我正在尝试编辑woocommerce模板以仅显示必填字段。 这是每个字段的内容:

$fields['billing']['billing_email'] = array(
        'label'     => __('Email', 'woocommerce'),
        'placeholder'   => _x('EMAIL', 'placeholder', 'woocommerce'),
        'required'  => true,
        'clear'     => true
    );

我的$ fields数组应该仅是具有required = true的对象

foreach ( $fields as $key => $field ) {

            //billing style argument fields. start
            $key_gap_list = array('billing_last_name', 'billing_company', 'billing_country', 'billing_address_1', 'billing_address_2', 'billing_city', 'billing_state', 'billing_phone');

            if (!isset($field['placeholder']) && isset($field['label'])) {
                $field['placeholder'] = $field['label'];
            }
            if (isset($field['required']) && $field['required']) {
                $field['placeholder'] .= ' *';
            }
            if (isset($field['class'])) {
                $findClass = array_search('form-control', $field['class']);
                if ($findClass) {
                    unset($field['class'][$findClass]);
                }
            }
            $field['input_class'] = array('form-control');
            unset($field['label']);

            //billing style argument fields. end
            if ( isset( $field['country_field'], $fields[ $field['country_field'] ] ) ) {
                $field['country'] = $checkout->get_value( $field['country_field'] );
            }

            woocommerce_form_field( $key, $field, $checkout->get_value( $key ) );

            if ($key == 'billing_last_name') {
                echo '<div class="clear"></div>';
            }
        }

1 个答案:

答案 0 :(得分:0)

我设法通过覆盖woocommerce签出模板并添加自定义字段并删除了我不需要的字段来解决了这个问题。该项目已关闭,因此我无法共享执行该操作的任何代码,但我正在关闭此问题。