PHP:遍历关联数组的问题

4
我有一个名为$woo_post_category的关联数组,如下所示:
array(1) { [0]=> object(stdClass)#5839 (10) { ["term_id"]=> int(796) ["name"]=> string(20) "Womens Comfort Bikes" ["slug"]=> string(20) "womens-comfort-bikes"

我尝试循环遍历数组并提取"name"键的值,以下是我的代码:
foreach($woo_post_category as $key_category => $value_category) {
        if ( $key_category == 'name') {
            echo 'Product is in Category:' . ' ' . $value_category;
        }
} 

我遇到了一个错误:

PHP可捕获致命错误:无法将stdClass类的对象转换为字符串

请问有人能指出问题所在吗?谢谢。


你可以使用 array_key_value()... - Krishna Gupta
$value_category 是 stdClass 对象,您正在尝试将其输出。请尝试 $value_category->term_id - Jigar
你能发布完整的数组输出吗? - Mirceac21
3个回答

2

试试这个:

foreach($woo_post_category[0] as $key_category => $value_category) {
    if ( $key_category == 'name') {
        echo 'Product is in Category:' . ' ' . $value_category;
    }
}

$woo_post_category是一个只有一个元素的数组,而不是对象。

因此,$woo_post_category[0]是数组的第一个元素,也是你的对象。

当你使用foreach时,$key_category是数组的键(0),$value_category是第一个元素的值,并且它是stdClass

所以,当你尝试运行

if ( $key_category == 'name') {

你比较了 stdClass ($key_category) 和 'name'。这就是你遇到此错误的原因。

1
你有一个关联数组而不是单维数组,所以你的if条件应该像这样。
foreach($woo_post_category as $key_category => $value_category) {
        if ( key_exists('name',$value_category)) {
            echo 'Product is in Category:' . ' ' . $value_category->name;
        }
} 

1
在您的情况下,$value_category 似乎会作为对象出现。
因此,您可以按以下方式获取数据: $value_category->name $value_category->term_id 因此,您可以更正条件以使脚本正常工作。
如果需要更多帮助,请将脚本发送给我。
谢谢 Amit

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