请注意,我已阅读Reference — What does this symbol mean in PHP?和What Does This Mean in PHP -> or =>,我知道PHP中的=>
做了什么。
我的问题不同。
通常,大多数编程语言都使用=
为另一个编程语言赋值。
示例01
$my_name = "I am the Most Stupid Person"; //Yes, that is my name in SO :-)
示例02
$cars = array();
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
现在让我们看一下示例。
$myArray = array(
0 => 'Big',
1 => 'Small',
2 => 'Up',
3 => 'Down'
);
以下是我们为$myArray['0']
指定了“大”的情况。
但在这里我们使用=>
代替=
。是否有任何特殊原因 PHP以这种方式设计?
答案 0 :(得分:4)
语法的一致性很重要,在这里我会说在数组中使用=>
是为了确保=
仍然有效。例如:
$a = 5;
将变量$a
设置为5
。
$a = $b = 5;
将变量$a
和$b
设置为5
。那是=
,因为操作员将右侧分配到左侧(如果可能),其结果也是右侧。所以现在,在数组的上下文中:
$a = array(
0 => 'foo'
);
现在$a[0]
是'foo'
。
$a = array(
0 => $b = 'foo'
);
现在$a[0]
和$b
都是'foo'
。现在考虑一下:
$b = 0;
$a = array(
$b => 'foo'
);
简单地表示$a[$b]
,即$a[0]
为'foo'
。如果PHP使用=
表示数组键:
$b = 1;
$a = array(
$b = 'bar'
);
$a
的价值是多少?是[1 => 'bar']
吗?或者是[0 => 'bar']
? $b
获得了值'bar'
吗?或者它只用作钥匙?
正如您所看到的,解析器会以这种方式非常混乱,并且无法使用此语法允许由变量定义的键。
答案 1 :(得分:0)
这是因为解析器是以这种方式编写的。
此外,它比$variable = ""
更具可读性,其中$variable now has value ""
代替'key' => ""
In array at position 'key' there is value ""