我是PHP的新手。当我使用“echo”打印数组元素时,我的成功似乎取决于我对索引的命名。这不可能是对的,对吧?!我觉得我疯了。这段代码:
$ARRAY['q1'] = 'foo';
echo "q1 is $ARRAY[q1]<br>";
工作正常。但是这段代码:
$ARRAY['1q'] = 'foo';
echo "1q is $ARRAY[1q]<br>";
产生错误:
解析错误:语法错误,意外的T_STRING,在第6行的/var/www/html/test.php中期待']'
我知道我可以纠正这样的问题:
echo "1q is " . $ARRAY['1q'] . "<br>";
但我的问题是为什么第一个代码块中的数组索引“1q”与“q1”有关系?我甚至检查过1q是否是某种常数,但似乎不是。这是在字符串中插入数组元素的不正确方法吗? (我从PHP文档中复制了它。)
这是在PHP 5.3.8中。我真的很感激任何帮助。
修改 好的,我在PHP手册的这一页上从例#8中得到了这个echo语法:http://www.php.net/manual/en/language.types.string.php显然这不是正确的做事方式。我将在手册中添加用户提供的注释。
产生此错误的整个脚本将是:
<?php
$ARRAY['1q'] = 'foo';
echo "1q is $ARRAY[1q]<br>";
?>
答案 0 :(得分:3)
因为它试图将数组键视为某种文字。对于q1
,这是有效的,因为没有名为q1
的常量,因此PHP假设它应该是一个字符串。但是,1q
失败了,因为它开始将其视为一个数字。
你不应该在这样的字符串中嵌入数组。使用以下之一:
echo "1q is {$ARRAY['1q']}";
echo "1q is ".$ARRAY['1q'];
答案 1 :(得分:0)
在双引号字符串中使用数组时,如果PHP看到数组键以数字开头,则假定整个键是数字索引,例如
echo "$arr[123abc]";
被解释为$arr[123]
。 abc
部分是产生预期字符串错误的部分,因为数字键不能包含非数字组件。
要解决此问题,您必须使用
echo "1q is {$ARRAY['1q]'}<br>";
^ ^ ^^
使用正确引用的数组索引
答案 2 :(得分:0)
您不需要连接。试试echo "1q is {$ARRAY['1q']}";
。