2011-03-21 58 views
0

我如何擺脫這個錯誤?得到真正煩人的錯誤:「致命錯誤:不能使用字符串偏移量作爲數組...」

代碼:

 function get_green_entities($c,$array){ 
      $thisC = &$this->output[$this->sessID];  
      $timeDif = 4; 
      $cols = count($thisC['clientCols'])+1; 
      if(!isset($array['Entity ID'])){ 
       return get_grey($c); 
      } 
      if(!isset($thisC['CURRTIME'][$array['Entity ID']])){ 
       $thisC['CURRTIME'][$array['Entity ID']] = 
         (isset($array['timestamp'])?$array['timestamp']:null); 
      } 
     } 

我打的錯誤在這最後if語句的路線:

$thisC['CURRTIME'][$array['Entity ID']] = 
          (isset($array['timestamp'])?$array['timestamp']:null); 

而且我知道$array['Entity ID']=4

如何解決這個問題?

感謝:-)

更新3
我刪除了垃圾場,因爲他們是一個有點敏感

+0

你能給我們一個$ thisC的var_dump嗎? – Endophage 2011-03-21 18:25:10

+0

是的,一分鐘 – Neal 2011-03-21 18:26:05

+0

它已被更新:-) – Neal 2011-03-21 18:30:18

回答

1

這裏只有三種可能性要麼$thisC$thisC['CURRTIME'],或$array不是數組...

您可以更改功能簽名以防止後者出現:

function get_green_entities($c, array $array) 

如果$array是問題,則在調用該函數時會觸發它。所以現在如果問題依然存在,你知道它與$thisC有關。

在錯誤發生之前調用var_dump就應該明確問題所在。

考慮的行爲:

$array = 'test'; 

if (!isset($array['foo']['bar'])) 
    $array['foo']['bar'] = true; // error is triggered here 

所以,我覺得這個問題是$thisC['CURRTIME']並不總是像你期望的數組。

+0

。 – Neal 2011-03-21 18:42:49

+0

@尼爾,你說它是「最後的成功」。我認爲這是錯誤發生之前的那個,這並沒有提供任何解釋。在我的答案中查看我的附加示例,其行爲與您所描述的內容非常相似。 – Matthew 2011-03-21 18:48:05

+0

是的。我把轉儲放在if語句中。 var設置前 – Neal 2011-03-21 18:52:44

相關問題