php 未捕获的类型错误:无法访问字符串上的字符串类型的偏移量

1bqhqjot  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(153)

未捕获的类型错误:Cannot access offset of type string on string in C:\OSPanel\domains\wordpress\wp-content\plugins\advanced-custom-fields-pro\includes\acf-value-functions.php:63堆栈跟踪:#0
编写此函数:

function acf_get_value( $field, $post_id = 0 ) {
    
    // Allow filter to short-circuit load_value logic.
    $value = apply_filters( "acf/pre_load_value", null, $post_id, $field );
    if( $value !== null ) {
        return $value;
    }
    // Get field name. 
    $field_name = $field['name']; // --- HERE ERROR ---
    
    // Check store.
    $store = acf_get_store( 'values' );
    if( $store->has( "$post_id:$field_name" ) ) {
        return $store->get( "$post_id:$field_name" );
    }
    
    // Load value from database.
    $value = acf_get_metadata( $post_id, $field_name );
    
    // Use field's default_value if no meta was found.
    if( $value === null && isset($field['default_value']) ) {
        $value = $field['default_value'];
    }
    
    /**
     * Filters the $value after it has been loaded.
     *
     * @date    28/09/13
     * @since   5.0.0
     *
     * @param   mixed $value The value to preview.
     * @param   string $post_id The post ID for this value.
     * @param   array $field The field array.
     */
    $value = apply_filters( "acf/load_value", $value, $post_id, $field );
    
    // Update store.
    $store->set( "$post_id:$field_name", $value );

    // Return value.
    return $value;
}

$field = get_field_object('name');
$field_name = $field ['name'];
不工作

7ivaypg9

7ivaypg91#

该错误意味着您正在尝试使用不存在的键从关联数组中获取值。
根据您确定的行,将代码更改为:

// Get field name. 
$field_name = $field['name'] ?? '';

适用于PHP 7及以上版本。
如果您使用的是低于7的PHP版本,请将该行更改为

$field_name = $field['name'] ?: '';

然而,就像第一条评论建议的那样,执行var_dump($field)来查看数组的内容。上面的代码只会设置默认值,而不会给出致命错误。

相关问题