未定义的属性:stdClass PHP

时间:2015-04-04 16:12:40

标签: php laravel-5 stdclass

我遇到了一个我无法解决的小问题。

所以我收到此错误消息:

  

未定义的属性:stdClass :: $ wins

但是我做了一个我的对象的var_dump并且它赢了...

我不明白是什么。

以下是我启动对象的方式:

$ champStats-> gp + = 1;

    if($matchStats->winner)
        $stats->wins += 1;
    else
        $stats->loss += 1;

这就是我所说的:

   $stats=Cache::get($key);

   <p>GP: {{$stats->gp}}</p>
   <p>Wins: {{$stats->wins)}}</p>                               

当我做var_dump($ stats)时,我明白了:

object(stdClass)[584]
 public 'gp' => int 2
 public 'wins' => int 1

...

我只是不明白问题是什么......

这是我启动对象的完整代码(请注意,我使用了laravel框架):

  $playerStats = new \stdClass();
  $matches = Match::all();
  $matchStats = $match->stats;

  $playerStats->gp += 1;

  if($matchStats->winner)
        $playerStats->wins += 1;
  else
        $playerStats->loss += 1;

  $playerStats->kills += $matchStats->kills;
  $playerStats->deaths += $matchStats->deaths;
  $playerStats->assists += $matchStats->assists;

 Cache::forever($key,$playerStats);

在我看来,我称之为:

   $stats=Cache::get($key);

   <p>GP: {{$stats->gp}}</p>
   <p>Wins: {{$stats->wins)}}</p> (This is where I get my error)
   <p>Kills: {{$stats->kills)}}</p>
   <p>Deaths: {{$stats->deaths)}}</p

以下是完整的错误代码:

  

653ee84185b758200c82957f836de32f第56行中的ErrorException:   未定义的属性:stdClass :: $ wins

感谢您的帮助, ARA

2 个答案:

答案 0 :(得分:3)

我猜你在增量期间得到通知。在递增之前尝试检查变量是否已设置。

if($matchStats->winner) {
    if(!isset($stats->wins)) {
        $stats->wins = 1;
    }
    else {
        $stats->wins++;
    }
}
else {
    if(!isset($stats->loss)) {
        $stats->loss = 1;
    }
    else {
        $stats->loss++;
    }
}

另一个(可能更好)选项是在您创建$stats->wins时将$stats->loss$stats初始化为0.

答案 1 :(得分:0)

您可以尝试使用数组约定访问值

$stats=Cache::get($key);
<p>GP: {{$stats['gp']}}</p>
<p>Wins: {{$stats['wins'])}}</p>   
祝你好运!