You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含WC_Meta_Data对象的数组中获取_wc_deposits_original_total值

解决WC_Meta_Data对象中提取指定键值的问题

嘿,我来帮你搞定这个提取数值的问题!你遇到的核心点在于:meta_data数组里存储的不是普通数组,而是WC_Meta_Data对象,它的current_data和data属性都是受保护的(protected),所以没法直接用array[][]的方式直接访问。不过有两种可靠的方式可以拿到你要的828.00:

方法一:使用Woocommerce官方提供的公共方法(推荐)

WC_Meta_Data类本身提供了get_data()方法,用来安全地获取内部的元数据数组,这是最规范且向后兼容的方式:

// 假设你的原始数组变量名为$order_meta
$meta_object = $order_meta['meta_data'][1];
// 获取对象内部的元数据数组
$meta_data_array = $meta_object->get_data();
// 提取目标值
$original_total = $meta_data_array['value'];

// 也可以直接链式调用简化代码
$original_total = $order_meta['meta_data'][1]->get_data()['value'];

这样就能精准拿到_wc_deposits_original_total对应的828.00了。

方法二:通过反射访问受保护属性(不推荐,仅作了解)

如果你实在需要直接访问对象的受保护属性,可以用PHP的反射机制,但这种方式不推荐——因为Woocommerce的内部属性结构可能随版本更新变化,会导致代码不稳定:

$meta_object = $order_meta['meta_data'][1];

// 创建反射对象
$reflection = new ReflectionObject($meta_object);
// 获取受保护的current_data属性
$current_data_prop = $reflection->getProperty('current_data');
// 设置属性为可访问
$current_data_prop->setAccessible(true);
// 获取属性值
$current_data = $current_data_prop->getValue($meta_object);
// 提取目标值
$original_total = $current_data['value'];

再次提醒:优先使用方法一,官方方法能保证你的代码在Woocommerce版本迭代时不会轻易失效。

内容的提问来源于stack exchange,提问作者Jaatson41

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:19:04