PHP变量插值,为什么它工作

时间:2015-07-23 22:37:33

标签: php arrays

鉴于此设置

$names = array('Smith', 'Jones', 'Jackson');

我知道这有效:

echo "Citation: {$names[1]}[1987]".PHP_EOL; //Citation: Jones[1987]

PHP通过带花括号的复杂语法,拉动数组中第二个元素的值,而[1987]只是另一个文本......

但是在下一个代码中:

echo "Citation: $names[1][1987]".PHP_EOL;

我期待一个错误,我希望PHP把它解释为一个二维数组并抛出一个错误,但它给了我相同的输出,上面的代码“Citation:Jones [1987]”

为什么?

1 个答案:

答案 0 :(得分:1)

PHP首次出现在a[href^=tel]{text-decoration:none;} ,因为你有一个数组,正如你在manual中看到的那样:

  

同样,可以解析数组索引或对象属性。对于数组索引,结束方括号(])标记索引的结尾。对于简单变量,相同的规则适用于对象属性。

这意味着结束是第一个索引,例如

echo "Citation: $names[1][1987]".PHP_EOL;
              //^ Start ^ End

这意味着你的第二个维度"只是被解析为普通字符串。因此,对于更复杂的结构,您必须使用复杂的语法来标记变量的开头和结尾,例如

]

所以这会给你警告:

  

注意:未初始化的字符串偏移量:1987