PHP对象数组-尝试提取键

5
我正在获取 WooCommerce 订单产品的 meta_data,就像这样...
$item_meta_data = $item_values->get_meta_data();

这给我以下结果...

WC_Meta_Data Object
(
    [current_data:protected] => Array
        (
            [id] => 8795
            [key] => Option 1
            [value] => Yes
        )

    [data:protected] => Array
        (
            [id] => 8795
            [key] => Option 1
            [value] => Yes
        )

)

我对返回的数据感到困惑,我想检查是否设置了 Option 1,我试过像这样获取键...

foreach($item_meta_data as $meta_data_item) {
    echo $meta_data_item['key'];
}

但这并不起作用,因为它不是一个数组,有任何想法吗?

2
也许考虑使用此对象提供的方法 - Mark Baker
你尝试过先将其转换为数组/对象,使用(array)$item_meta_data或者(object)$item_meta_data吗? - cchoe1
我已经查看了可用的方法,但无法使其按照我的意愿运行。也许是因为我对文档的理解不够深入。我会进一步阅读。 - fightstarr20
2个回答

5

WC_Meta_Data类中有一个神奇的方法叫做__get

因此,您可以访问受保护的属性。例如:

$item_meta_data->key

这给了我一个错误...在数组上调用成员函数 get_data()。 - fightstarr20
@fightstarr20 我也遇到了同样的问题。这是因为你有一个只包含一个元素的数组。所以在这种情况下,$item_meta_data[0]->key 就可以工作了,但你应该考虑重构一下你的代码(因为 $item_meta_data 是一个 item_meta_data 数组)。 - Zeth

0

您可以使用$item_meta_data->get_data()访问所有数据,或使用$item_meta_data->id$item_meta_data->key$item_meta_data->value访问特定项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接