2014-01-25 138 views
0

此代碼中必須存在明顯的錯誤,但我沒有看到它。介意看看?從數組中獲取值時出現非法字符串偏移警告

以下代碼返回

string 
fleet 
Warning: Illegal offset type (line 6)  

的子程序任務部隊只是拉.ini文件,讀取它到一個數組,並返回該數組,它在foreach然後迭代通過。在相關部分,數組看起來像這樣。

; this is an INI file 
[scout] 
type = "fleet" 

下面是代碼:

foreach($_SESSION['ini']->taskforces() as $key => $val) 
{ 
    echo gettype($val["type"]); 
    echo $val["type"]; 

    if($val["type"] == "fleet") { 
     $commanderData[$val] = "BLOB"; 
     $commanderData["sc$val"] = "INT NOT NULL"; 
    } 
} 

我想不會有非法偏移類型,因爲我想要的代碼要經過if條件。我錯過了什麼明顯的東西?

謝謝。

回答

0

我不知道爲什麼這會導致問題,但我意識到if語句的結果是不正確的。代碼

$commanderData[$val] = "BLOB"; 

嘗試使用矩陣$ val作爲$ commanderData數組的鍵。它應該通過ini文件迭代使用字符串$ key。一旦修復,我就不再收到警告,但不清楚爲什麼會在前面的行中引發錯誤。

0

取而代之的是:
echo $val["type"];
你應該有簡單:
echo $val;
只是因爲$val一個數組,它是一個字符串。你已經通過一個數組創建了一個foreach,所以在每次迭代中你都會得到一個數組鍵值和一個數組值(顯然,這就是字符串「fleet」)。

+0

不,那是不對的。如果你看看Ini文件的結構,你會發現數據實際上是一個矩陣,所以$ key =「scout」和$ value = array([type] =>「fleet」)。我發現錯誤,我會盡快發佈解決方案。 –

相關問題