php 变量解析

发布网友 发布时间:2022-04-20 22:09

我来回答

2个回答

热心网友 时间:2022-04-06 07:08

第一个问题的确需要仔细分析:
①首先,你得知道,在双引号中的字符串输出时,变量必须得用它的值取代:如$a=100;
就有"$a"="100";
②其次,php在读双引号中的内容时,一旦遇到$,就希望找到一个最可能的变量。现在看"A banana is $fruits[banana].";这一句,php顺着$往下找找到了[,[是数组索引的标志,如果在找到与之配对的]之前不出现非法字符,php很自然的就把整个式子$fruits[banana]当成了整个变量,所以这样写是对的
③与②对应的"A banana is $fruits['banana'].";错在哪应给就清楚了吧?php找到[之后,觉得这是个数组,但紧接着它又找到了',这是他不能够接受的,如果它仍旧把$fruits['banana']当做变量,就会出现变量名字里边出现非法字符'和'的错误。注意这些都是在双引号里边给以讨论的
④那为什么 "A banana is {$fruits['banana']}."; 就可以呢?因为{}的意思我们应该都了解的,用在语法里边{}就像是一个个语句岛,除了全局变量和常量,{}里边的东西和{}外边的东西基本是隔绝的,也就是说{}里边的语法是不受外边的双引号影响的。所以写法就符合平常的语法了
⑤其实{$fruits['banana']}是正确的而{$fruits[banana]}是错误的,但为什么php不报错呢?对php而言,数组的[]里边只能是字符串和int值,那么$fruits[banana]是什么呢?php里边带$的是变量,加单引号或者双引号的是字符串,那么banana会是什么呢?对了,是常量!php觉得你这里写的banana是个值可能为int或字符串的常量,所以它觉得写的挺合理的。但是你实际上并没有定义这个常量,所以肯定会出错的

至于你的第二个问题,这是php的字符串连接问题。$fruits['banana']的值是一个字符串,那么当你把它和另一个字符串"echo A banana is "接在一起的时候肯定的需要特定的符号了。一般的语言用的是+,php用的是.
你直接打印这个字符串当然是可以的了。
怎么样?解释的够清楚吧?可以给分了吧?呵呵,打字快累死了,要劳有所得啊,还有什么问题的话联系我,我们再讨论!

热心网友 时间:2022-04-06 08:26

{$变量}只能用在双引号里面。这个意思好像是强制提前解析。
PHP数组里面 $array['a'],$array[a]都能解析出来 但是有引号的要快N倍;
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com