【发布时间】:2018-06-07 17:15:28
【问题描述】:
我正在使用 PHP 7.0.2
考虑以下 PHP 手册中的文本:
为什么 $foo[bar] 错了?
始终在字符串文字数组索引周围使用引号。例如, $foo['bar'] 是正确的,而 $foo[bar] 不是。但为什么?这很正常 在旧脚本中遇到这种语法:
<?php $foo[bar] = 'enemy'; echo $foo[bar]; // etc ?>这是错误的,但它有效。原因是这段代码有一个 未定义的常量 (bar) 而不是字符串 ('bar' - 注意 引号)。它之所以有效是因为 PHP 会自动转换一个 裸字符串(一个 不对应任何已知符号的不带引号的字符串)到 包含裸字符串的字符串。例如,如果没有 定义名为 bar 的常量,然后 PHP 将在字符串中替换 'bar' 并使用它。
从上面的文字我不清楚当 PHP 遇到 bar() 时,它不对应于任何已知的符号,即未定义的常量 PHP 实际用它做什么?
PHP 如何将裸字符串 bar 转换为包含裸字符串的字符串,即'bar'?
PHP 是否定义了一个常量标题栏并为其分配了字符串值'bar'?
点赞bar = 'bar';
如果是,我可以在后面的代码中使用常量bar 吗?
因为在 PHP 中只有一个变量和一个常量可以包含值/保存值,而不是像字符串这样的类型包含/保存任何值。
【问题讨论】:
标签: php string constants undefined-symbol