【发布时间】:2014-12-15 21:18:59
【问题描述】:
我正在学习 codeacademy.com 上的 PHP 课程,Advanced Arrays 的第 4/7 课想要编写一个 echo 语句来访问关联数组中的值。
我的第一次尝试是:
echo "I own a $myAssocArray['colour'] $myAssocArray['doors']-door $myAssocArray['year'] $myAssocArray['make'].";
引发错误:
解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,预计第 26 行有 T_STRING 或 T_VARIABLE 或 T_NUM_STRING
我意识到我可以使用连接运算符来做到这一点:
echo "I own a " . $myAssocArray['colour'] . " " . $myAssocArray['doors'] . "-door " . $myAssocArray['year'] . " " . $myAssocArray['make'] . ".";
在玩的时候,我只需删除数组访问器中的撇号就可以实现这一点。下面的编译没有错误并产生预期的字符串:
echo "I own a $myAssocArray[colour] $myAssocArray[doors]-door $myAssocArray[year] $myAssocArray[make].";
我还可以使用花括号表示法以我认为需要的方式访问数组值:
echo "I own a {$myAssocArray['colour']} {$myAssocArray['doors']}-door {$myAssocArray['year']} {$myAssocArray['make']}.";
我的理解是关联数组值可以通过索引(整数)或键(字符串)访问。
- 我的理解有误吗?
- 还是有一些我没有掌握的基本原则?
- 或者这是 codeacademy.com 使用的 PHP 编译器特有的行为?
如何才能准确解析这种语法?
echo "some text $associative_array[key] some more text";
编译器如何知道将key(或colour、doors、make、year 等)解释为字符串值?
【问题讨论】:
-
1.你的理解是正确的。 2. 没有。 3. 这是 PHP 的行为。很奇怪,对吧? 4.见3
-
通常,如果您这样做,那么大多数人更喜欢使用大括号表示法。虽然大多数理智的人可能会使用
printf|sprintf或strtr... -
从 C 迁移的人至少会使用
printf,但是如果您从 C 迁移到 PHP,我不确定“理智”一词是否适用于您。 ;) -
哈......如果你想进入 Web 开发,那就不要了。显然,还有其他语言可能会被许多人认为更好,或者至少有比 PHP 更可接受的缺点列表,但是一旦你习惯了它,它就不错了。然而,有很多缺乏纪律的开发人员在使用它哈哈,我觉得这也是它获得如此糟糕代表的部分原因。
标签: php