PHP中的is_null仍然返回null?

时间:2011-06-07 16:50:12

标签: php

所有

我有以下代码:

public function addElements()
{
     $newArray = array();
     for ($index = 0 ; $index < count($this->listOfElements) ; $index++)
     {
           $temp = $this->listOfElements[$index];
           if (!is_null($temp) && !is_null($temp->getPlayerOb()))
           {
              echo "Player Name is: ".$temp->getPlayerOb()->getName();
              array_push($newArray, $temp);
           }
     }
}

错误行是if (!is_null($temp) && !is_null($temp->getPlayerOb())),堆栈说:

Call to a member function getPlayerOb() on a non-object

由于我试图跳过空值

,我无法理解这里的问题

1 个答案:

答案 0 :(得分:6)

$temp显然是非null的非对象值。我不知道listOfElements是什么,但是访问不存在的密钥可能会false而不是null

您可以选择is_object来代替:

if (is_object($temp) && !is_null($temp->getPlayerOb()))

然而,积极检查会更好。请查看instanceof和班级名称:

if (($temp instanceof SomeClass) && !is_null($temp->getPlayerOb()))