PHP:通过关联数组发出循环问题

时间:2015-12-21 11:22:53

标签: php arrays

我有以下名为$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"

我尝试遍历数组并拉出名称键的值关联。我有以下代码:

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

我收到错误:

  

PHP Catchable致命错误:类stdClass的对象不可能   转换为字符串

任何人都可以在这里指出这个问题,谢谢

3 个答案:

答案 0 :(得分: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是包含一个元素的Array,而不是Object。

所以,$woo_post_category[0]是数组的第一个元素,这是你的对象。

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

所以,当你尝试运行

if ( $key_category == 'name') {

,您比较stdClass$key_category)和' name'。这就是你犯这个错误的原因。

答案 1 :(得分:1)

在您的情况下, $ value_category 会成为对象。

所以你会以下列方式获得数据

<强> $ value_category-&GT;名称

<强> $ value_category-&GT; term_id

因此您可以更正条件以使脚本正常工作。

如果需要更多帮助,请通过我的脚本。

由于 阿米特

答案 2 :(得分: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;
        }
}