Php不能将对象stdClass用作数组

时间:2011-04-01 16:03:20

标签: php json object

DERP。 获取'致命错误:不能使用stdClass类型的对象作为数组'

我不知道我在这里做错了什么:

foreach ($json->result->items[$key]->attributes->attribute as $attrib => $val) 
{
    if($json->result->items[$key]->attributes->attribute[$attrib]->name == 'cannot_trade')
    {
        $notrade=1;
        echo 'Item ' . $key . ' is not tradeable' . $br;
    }
}

这是数据:

[attributes] => stdClass Object
(
  [attribute] => Array
  (
    [0] => stdClass Object
    (
      [name] => custom employee number
      [class] => set_employee_number
      [value] => 0
    )
    [1] => stdClass Object
    (
      [name] => cannot trade
      [class] => cannot_trade
      [value] => 1
    )
  )
)

基本上,我正在尝试测试'attribute'数组是否具有cannot_trade东西。 有时,父对象没有“属性”对象

2 个答案:

答案 0 :(得分:9)

如果需要,您可以将JSON解析为数组:

// These both give you an array:
$json = json_decode($whatever, true);
$json = (array) json_decode($whatever);

答案 1 :(得分:1)

你可以尝试

if($val->name == 'cannot_trade')
{
    $notrade=1;
    echo 'Item ' . $key . ' is not tradeable' . $br;
}

如果仍然无效,请尝试添加

var_dump($val);

在循环中,检查它真正包含的内容。