我有以下名为$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的对象不可能 转换为字符串
任何人都可以在这里指出这个问题,谢谢
答案 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;
}
}