1> 数组变量未用双引号包括时
在正常情况下,数组变量没有被双引号包围时,是否给索引字符串加上单引号输出结果都一致时apple,但是当定义一个与索引字符串fruit同名的常量时,未加单引号的索引字符串输出结果就成了carrot,而加上单引号还是apple
<?php$_arr = array('fruit'=>'apple','veggie'=>'carrot');define('fruit','veggie');//1.数组变量未用双引号包括时print_r($_arr['fruit']); //apple 索引字符串加单引号表示字符串本身print_r($_arr[fruit]);//carrot 索引字符串未加单引号表示常量,当常量未定义时则解析为字符串,等效于加上单引号//2. 数组变量用双引号包括时print_r("Hello $_arr[fruit]") ; // Hello apple 索引字符串不加单引号表示字符串本身print_r("hello {$_arr[fruit]}");//hello carrot 数组变量加上花括号表示与字符串同名常量print_r("hello {$_arr['fruit']}");//hello apple 索引字符串加上单引号且数组变量加上花括号表示字符串本身print_r("$arr['fruit']"); //报错 索引字符串加上单引号且数组变量未加上花括号?>
2 >数组变量用双引号包括时
第一种写法索引字符串不添加任何引号,此时表示获取索引为字符串fruit的数组元素,输出apple。
第二种写法索引字符串也没有添加任何引号,同时将数组变量用一对花括号{ }给包了起来,此时fruit实际上表示一个常量,而不是一个字符串,因此表示获取索引为fruit常量值的数组元素,常量fruit的值是veggie,所以输出carrot。
第三种写法是引用字符串不但添加了单引号,同时也将数组变量用一对花括号{ }给包了起来,此时表示获取索引为字符串fruit的数组元素,输出apple。
第四种写法是索引字符串加上单引号且数组变量未加上花括号,为错误写法,报错:Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'