2014-01-25 38 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”)。我发现错误,我会尽快发布解决方案。 –

相关问题