php array 插值,PHP中的关联数组的插值(双引号字符串)

插入php的字符串索引数组元素时(5.3.3,win32)以下行为可能是预期的或非预期的:

$ha = array('key1' => 'Hello to me');

print $ha['key1'];   # correct (usual way)print $ha[key1];     # Warning, works (use of undefined constant)

print"He said {$ha['key1']}"; # correct (usual way)print"He said {$ha[key1]}";   # Warning, works (use of undefined constant)

print"He said $ha['key1']";   # Error, unexpected T_ENCAPSED_AND_WHITESPACEprint"He said $ha[ key1 ]";   # Error, unexpected T_ENCAPSED_AND_WHITESPACEprint"He said $ha[key1]";     # !! correct (How Comes?)

最后一行似乎是正确的PHP代码。有什么解释吗?是否可以信任此功能?

编辑:为了减少误解,发帖点现在设置为粗体。

See also:stackoverflow.com/questions/27742321/…

是的,你可以相信。文档中很好地介绍了变量的所有插值方法。

如果你想知道为什么这么做的原因,我不能帮你。但和往常一样:PHP是老的,已经发展了很多,因此引入了不一致的语法。

nikic I CAN",找到这个应用案例(W/O卷曲牙套)在文档在哪儿?谢谢,RBO

马里奥:@个人我认为它不可能是好的,但很多人把它是好的那部分>。

"橡胶靴:看出来:echo"He drank some $juices[koolaid1] juice.".PHP_EOL;本线。

heaps大学的优点和缺点。我喜欢一个人/ PHP字符串Perl语法printf风格的插值方法在Python或Ruby。它使代码更可读和maintainable。它提供的信息。exploitable邋遢的程序员写SQL语句太容易。然而,更好的比单率微优化。

nikic:好的,谢谢!

"玛丽,我来(Live在安静的Perl Perl)和插值,使事情更可读。在DMF中的PHP(dearly交叉算子的特征)是P系列(率)>Q QQ { },{ },{ } { } QX,量子阱。所以(我)不作为字符串插值可能是有用的,因为它是在PHP。:-(

"橡胶靴:好的,也有NOWDOCHEREDOC和PHP。虽然他们可能不是很好,但他们通常以相同的用途,他们don’t?

"nikic人服务的,正确的。但不是在一个单一的线。的Perl:比较X美元= {的文本} $ QQ;

"橡胶靴:是的,我承认,它是我的。他……bulky。最小的三和四线,它在函数调用,是必需的。

当你思考它,它种在抽象理解女孩的方式。当你有一个字符串的数组,它expects,现在整个事情已经在一个字符串,变量的名字是我们的interpolated本身,但有更多的报价方括号是多余的。它的理解是有价值的interpolated变量名而不是在方括号,除非它是interpolated起飞一个美元符号。至少这是我如何解释这个特征,它似乎是合理的逻辑,给我。

是的,这是定义良好的行为,并且始终查找字符串键'key',而不是(可能未定义的)常量key的值。

例如,考虑以下代码:

$arr = array('key' => 'val');

define('key', 'defined constant');

echo"\$arr[key] within string is: $arr[key]";

这将输出以下内容:

$arr[key] within string is: val

也就是说,编写这样的代码可能不是最佳实践,而是使用:

$string ="foo {$arr['key']}"

$string = 'foo ' . $arr['key']

语法。

最后一个是由php标记器处理的特殊情况。它不查找是否定义了该名称的任何常量,它始终假定字符串文本与php3和php4兼容。

只是为那些感兴趣的(没有人会想要……):a T_STRINGPHP生成的数组的索引(或如果它是一个非T_NUM_STRING十进制数溢出的T_CONSTANT_ENCAPSED_STRING)而不是正常的。

要回答您的问题,是的,是的,它可以,而且非常像内爆和爆炸,PHP是非常宽容的…所以矛盾比比皆是

我不得不说,我喜欢PHP的插值,它可以将变量以菊花的形式插入字符串中,

但是,如果只使用单个数组的对象进行字符串变量插值,则编写一个模板可能会更容易,您可以将特定的对象变量菊花打印到模板中(如javascript或python),从而对应用于字符串的变量范围和对象进行显式控制。

我觉得这家伙的指纹对这类事情很有用

http://www.frenck.nl/2013/06/string-interpolation-in-php.html

$values = array(

'who'   => 'me honey and me',

'where' => 'Underneath the mango tree',

'what'  => 'moon',

);

echo isprintf('%(where)s, %(who)s can watch for the %(what)s', $values);

// Outputs: Underneath the mango tree, me honey and me can watch for the moon

链接报告a 404错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值