未定义的属性:stdClass PHP


Undefined property: stdClass PHP

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

所以我得到了这个错误消息:

未定义的属性: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行出现错误异常:未定义的属性:stdClass::$wins

谢谢你的帮助,Ara

我猜您在增量过程中收到了通知。在递增之前,请尝试检查变量是否已设置。

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时将$stats->wins$stats->loss初始化为0。

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

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

祝你好运!