分配中的php比较运算符

Sve*_*art 7 php

我在网上看到了一个小型php测验,其中包含以下代码:

$somevalue[[ 2 <=['-']=> 2][1]] = $somestring;
Run Code Online (Sandbox Code Playgroud)

我的问题是,作业之前的那部分是做什么的?

$somevalue[[ 2 <=['-']=> 2][1]] 
Run Code Online (Sandbox Code Playgroud)

<=看起来像比较运算符,但在这种情况下,它2'-'

Sea*_*ght 9

PHP的数组初始化语法如下所示:

$arr = [ key => value ];
Run Code Online (Sandbox Code Playgroud)

所以在这一部分:

2 <=['-']=> 2
Run Code Online (Sandbox Code Playgroud)

“键”是表达式的结果2 <= ['-'],根据该页面的计算结果true(一个数组始终大于您要与之比较的数组,除非它是另一个数组)。因为PHP数组键是整数或字符串,所以布尔结果隐式转换为integer 1,因此最终得到:

1 => 2
Run Code Online (Sandbox Code Playgroud)

因此,简化表达式为:

[ 1 => 2 ][1]
Run Code Online (Sandbox Code Playgroud)

将评估我们刚刚创建的数组的第二个元素(PHP数组基于0),因此可以简化为:

2
Run Code Online (Sandbox Code Playgroud)

因此,最后我们得到:

$somevalue[2] = $somestring;
Run Code Online (Sandbox Code Playgroud)

  • 很好的解释。我被困在`2 &lt;= ['-']`上,却不明白为什么它会导致“ true”,但是现在我知道了!:-) (2认同)