[]运算符不支持字符串,但是数组?

时间:2014-04-29 14:13:20

标签: php arrays

我有几个配置文件,我试图通过将它们全部包含在我的脚本中来将它们添加到一起。

这会返回错误[] operator not supported for strings,但$config不是字符串?

我已尝试首先声明我的数组$config = [];$config = array();,但没有运气。

文件: config1.php

$config[] = array(
    'database' => array(
        'name' => 'test'
    )
);

文件: config2.php

$config[] = array(
    'sarCallbacks' => array(
        'test1',
        'test2',
        'test3'
    )
);

如果我将数组键放在$config索引中,那就更糟了。

我做错了什么?

注意:我正在运行PHP 5.5.9。

2 个答案:

答案 0 :(得分:3)

对于PHP< = 5.3,它是

$config = array();

新的短数组语法$config = [];适用于PHP文档中记录的PHP5.4 +。

答案 1 :(得分:2)

正如您在评论中提到的那样,您在$config循环中重用变量名foreach(),这会覆盖$config(控制结构不会创建本地范围) 。然后$config的值成为循环数组中的最后一个值,即字符串。然后,您尝试将数组元素附加到该字符串,从而导致上述错误。

  

"变量的范围是定义它的上下文。   在大多数情况下,所有PHP变量只有一个范围。"

http://php.net/manual/en/language.variables.scope.php