Php 为WooCommerce中的foreach()提供的参数无效

Php 为WooCommerce中的foreach()提供的参数无效,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我有一个小问题,我正在修改WooCommerce中我帐户的选项卡结构,我想将“地址”与“帐户详细信息”链接起来,当我尝试打印“帐户详细信息”中该选项卡的字段时,“地址”出现问题: Warning: Invalid argument supplied for foreach () in C: \ xampp \ htdocs \ wp-content \ plugins \ woocommerce \ templates \ myaccount \ form-edit-address.php on

我有一个小问题,我正在修改WooCommerce中我帐户的选项卡结构,我想将“地址”与“帐户详细信息”链接起来,当我尝试打印“帐户详细信息”中该选项卡的字段时,“地址”出现问题:

Warning: Invalid argument supplied for foreach () in C: \ xampp \ htdocs \ wp-content \ plugins \ woocommerce \ templates \ myaccount \ form-edit-address.php on line 34
这是错误代码:

<?php 
foreach ($address as $key => $field) { // **line 34**
woocommerce_form_field ($key, $field, wc_get_post_data_by_key ($key, $field ['value']));
}
?>
如何在自定义选项卡中打印数组$地址?谢谢

升级:

我的一个尝试是在form-edit-account.php中包含form-edit-address.php文件

<?php
include("form-edit-address.php");
?>

我需要更仔细地看一下你的代码,但我猜问题在于你键入变量的方式


尝试
$address
而不是
$address

我需要更仔细地查看您的代码,但我猜问题在于您键入变量的方式


尝试
$address
而不是
$address

$
和代码中的变量名之间是否真的有空格?如果是这样,那就不合法了。请看这里:Updrade post,有什么想法吗?
$
和代码中的变量名之间真的有空格吗?如果是这样,那就不合法了。请看这里:Updrade post,有什么想法吗?这可能不是问题的答案,在此之前,他有错误的语法
@Asif非常正确,但鉴于提供的信息,我最有可能找到答案。如果提供更多信息,我将更新我的答案。对不起,这是通过翻译。变量是正确的,$address,$load address,依此类推。。。更新我修改的出版物和地方代码这可能不是问题的答案,在此之前,他有错误的语法
@Asif非常正确,但鉴于提供的信息,我最有可能找到答案如果提供更多信息,我将更新我的回答抱歉,这是通过翻译。变量是正确的,$address,$load address,依此类推。。。更新我修改的出版物和位置代码
<?php
include("form-edit-address.php");
?>
public static function edit_address( $load_address = 'billing' ) {
        $current_user = wp_get_current_user();
        global $load_address;
        $load_address = sanitize_key( $load_address );
        $country      = get_user_meta( get_current_user_id(), $load_address . '_country', true );

        if ( ! $country ) {
            $country = WC()->countries->get_base_country();
        }

        if ( 'billing' === $load_address ) {
            $allowed_countries = WC()->countries->get_allowed_countries();

            if ( ! array_key_exists( $country, $allowed_countries ) ) {
                $country = current( array_keys( $allowed_countries ) );
            }
        }

        if ( 'shipping' === $load_address ) {
            $allowed_countries = WC()->countries->get_shipping_countries();

            if ( ! array_key_exists( $country, $allowed_countries ) ) {
                $country = current( array_keys( $allowed_countries ) );
            }
        }

        global $address;

        $address = WC()->countries->get_address_fields( $country, $load_address . '_' );

        // Enqueue scripts.
        wp_enqueue_script( 'wc-country-select' );
        wp_enqueue_script( 'wc-address-i18n' );

        // Prepare values.
        foreach ( $address as $key => $field ) {

            $value = get_user_meta( get_current_user_id(), $key, true );

            if ( ! $value ) {
                switch ( $key ) {
                    case 'billing_email':
                    case 'shipping_email':
                        $value = $current_user->user_email;
                        break;
                }
            }

            $address[ $key ]['value'] = apply_filters( 'woocommerce_my_account_edit_address_field_value', $value, $key, $load_address );
        }

        wc_get_template(
            'myaccount/form-edit-address.php',
            array(
                'load_address' => $load_address,
                'address'      => apply_filters( 'woocommerce_address_to_edit', $address, $load_address ),
            )
        );
    }