从数组中获取值时出现非法字符串偏移警告

时间:2014-01-25 12:53:37

标签: php arrays ini

此代码中必定存在明显的错误,但我没有看到它。介意一下?

以下代码返回

string
fleet
Warning: Illegal offset type (line 6)    

taskforces子例程只是拉取一个.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条件。我错过了什么明显的事情?

感谢。

2 个答案:

答案 0 :(得分:0)

而不是:
echo $val["type"];
你应该简单地说:
echo $val;
仅仅因为$val 不是一个数组,它就是一个字符串。你已经通过数组创建了一个foreach,所以在每次迭代中你得到一个数组键和一个数组值(显然,字符串是“fleet”)。

答案 1 :(得分:0)

我不确定为什么会导致这个问题,但我意识到if语句的结果不正确。代码

$commanderData[$val] = "BLOB";

尝试使用矩阵$ val作为$ commanderData数组的键。它应该通过ini文件使用迭代中的字符串$ key。一旦修复,我就会停止收到警告,但不清楚为什么会将错误抛给前一行。