【问题标题】:Undefined property: stdClass PHP未定义的属性:stdClass PHP
【发布时间】:2015-04-04 16:12:39
【问题描述】:

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

所以我收到此错误消息:

未定义属性: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

感谢您的帮助, 阿拉

【问题讨论】:

  • 1.确保您向我们展示您的 完整真实 代码 2。另外请向我们展示您的 完整准确 错误消息你得到的(并在问题中用评论标记它)
  • 我添加了完整的代码
  • 另外请在问题中标出错误所在的行+完整的错误消息

标签: php laravel-5 stdclass


【解决方案1】:

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

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-&gt;wins$stats-&gt;loss 初始化为0。

【讨论】:

  • 1.这只是一个猜测(但很好) 2. 为什么不用 0 初始化它之前的属性,这样你就不必检查它了?
  • @Rizier123 哈哈,我正在用这个建议编辑我的帖子 :)
  • 我编辑了我的初始帖子以提供更多详细信息。但是初始化工作得很好。当我从我的视图中调用该对象时,它给出了一个错误。
【解决方案2】:

你能尝试使用数组约定访问值吗

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

祝你好运!

【讨论】:

  • 你在哪里看到arrayobject(stdClass)[584]
猜你喜欢
  • 1970-01-01
  • 2016-11-12
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
  • 1970-01-01
  • 2016-04-20
  • 2019-06-13
相关资源
最近更新 更多