<?php
function ReturnArray() {
return array('a' => 'f', 'b' => 'g', 'c' => 'h', 'd' => 'i', 'e' => 'j');
}
echo ${!${!1}=ReturnArray()}['a']; // 'f'
?>
Run Code Online (Sandbox Code Playgroud)
请解释上述分辨率中那些$ {!1}运行良好的计算逻辑和步骤是什么.
让我们从一些基础知识开始.在PHP中,类似于hello将对字符串求值"hello".要引用变量,可以使用以下语法:${expr}.还有一个简写$foo,这将粗略评估:${"foo"}.
此外,您可能知道可以一次分配多个变量:$a=$b=$c='hello';例如.这将分配$a,$b以及$c对'hello'.这实际上表示为$a=($b=($c='hello')));.$foo=value是一个表达式,在$foo设置之后,将评估为value.
您的代码语句如下所示:
echo ${!${!1}=ReturnArray()}['a'];
Run Code Online (Sandbox Code Playgroud)
它显然做的第一件事是电话ReturnArray.然后进行评估!1,评估为false.将${!1}因此使得与名称的变量false,虽然不是一个字符串(?!).之后,它对数组应用not操作.所有非空数组都是真实的,因此not操作将其更改为false.然后它再次使用该${}语法来检索名为的变量false.然后,它使用数组访问来检索数组中的键的值'a'.
我希望这是有道理的.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |