使用count(数组)会导致抛出错误

时间:2017-08-21 10:19:34

标签: php

我在模块CMap.php中的代码中有这一行,它是yii框架的一部分,它应该计算数组_d中元素的数量。

return count($this->_d);

但如果_darray[0],则会引发错误:

  

尝试获取非对象的属性

使用与我们的网络服务器上安装的版本相同的PHP v5.3.3(x86)。

知道为什么会这样吗?感谢。

编辑: 将代码更改为:

try {
  return null;

  if ($this->_d==null)
    return null;
  else {
    if(isset($this->_d[$key]))
      return $this->_d[$key];
    else
      return null;
    }
  }
catch (Exception $e) {
  return null;
}

如果没有输入return null;块,它仍会在第一个catch()行引发错误。

2 个答案:

答案 0 :(得分:3)

让我们分解错误信息:

  

试图获得财产

A"属性"是一个对象的领域,"属性访问"是你用->运算符做的。在您的情况下,$this->_d

  

非对象

在表达式$this->_d中,我们会说" _d$this"的属性。所以"非对象"表示->运算符的 left 上的内容不是对象。

所以假设您发布的代码是准确的,并且没有匿名到隐藏真实错误的位置,那么您的问题是$this是不是该部分代码中的对象。

请注意,这与$this->_d为空数组的说法相矛盾,因为如果$this不是对象,则$this->_d 不存在。所以我强烈怀疑你是在寻找错误的地方,或者你曾试图简化描述,但错过了重要的细节。

答案 1 :(得分:0)

好的,我现在要关闭这个帖子。

我的OP中发布的代码没有错误,并且没有导致错误。

完成红鲱鱼。发生的事情是在此方法之后运行的代码(调用此方法的代码)抛出了错误,但由于某种原因,代码没有显示在我的调试器中。我无法逐步完成它。

我看到的第一个调试是在ErrorHandler中的断点被击中时。

我将就YII框架如何/为何如此做出一个单独的问题。

感谢您的评论。