2011-06-07 54 views
1

所有,PHP中的is_null仍然返回null?

我有以下代碼:

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

我不能夠了解這裏的問題,因爲我我試圖跳過空值

+0

什麼是'$ temp'?那就是錯誤所在的地方 – Neal 2011-06-07 16:51:32

+4

也許'$ temp'不是'null',但也不是一個對象。 'var_dump($ temp)'說什麼? – 2011-06-07 16:52:13

回答

6

$temp is cle arly一個非對象值不是null。我不知道listOfElements是什麼,但是也許訪問不存在的密鑰給出false而不是null

您可能會is_object而不是檢查:

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

這將是更好的,但是,積極檢查。請用instanceof和類名稱:

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