Is there any reason for using => instead of = in PHP when assign a value to array?
请注意,我已经阅读了参考-这个符号在PHP中是什么意思?这在php->或=>中意味着什么,我知道=>在php中的作用。
我的问题不一样。
一般来说,大多数编程语言使用=为另一种语言赋值。
例01
$my_name ="I am the Most Stupid Person"; //Yes, that is my name in SO :-)
例02
1 2 3 4 5
| $cars = array();
$cars[0] ="Volvo";
$cars[1] ="BMW";
$cars[2] ="Toyota"; |
现在让我们看看下面的例子。
1 2 3 4 5 6
| $myArray = array(
0 => 'Big',
1 => 'Small',
2 => 'Up',
3 => 'Down'
); |
这也是我们为$myArray['0']分配"大"的情况。
但这里我们用=>代替=。有没有什么特殊的原因让PHP这样设计?
- 在PHP中可能重复使用=>
- 可能是因为=是将右边的值指定给左边的变量,而数组键不是变量(它们是数组键),所以需要一些其他符号来表示
- 相关/可能重复?
- @MasivuyEckile这个问题不是重复的,因为我在问为什么=>使用而不是=。请不要在未仔细阅读问题的情况下将问题标记为重复问题。拜托。。。
- @IAM最愚蠢的人如果你知道它的用法,你就会知道为什么用它来代替赋值运算符
- @MasivuyEckile不,我不知道,您的链接问题也没有提到为什么=>使用而不是=。
语法的一致性很重要,这里我要说在数组中使用=>是为了确保=仍然有效。例如:
将变量$a设置为5。
将变量$a和$b设置为5。也就是说,=作为一个运算符,将右手侧分配给左手侧(如果可能),其结果也是右手侧。现在,在数组的上下文中:
1 2 3
| $a = array(
0 => 'foo'
); |
现在,$a[0]是'foo'。
1 2 3
| $a = array(
0 =>  ;$b = 'foo'
); |
现在,$a[0]和$b都是'foo'。现在想想这个:
1 2 3 4
| $b = 0;
$a = array(
$b => 'foo'
); |
简单地说就是$a[$b],也就是说,$a[0]就是'foo'。如果php使用=作为数组键:
1 2 3 4
| $b = 1;
$a = array(
$b = 'bar'
); |
$a的价值是多少?是[1 => 'bar']吗?或者是[0 => 'bar']?$b是否得到了'bar'的值?或者它只是作为一把钥匙?
正如您所看到的,解析器将以这种方式非常混乱,并且将没有办法允许由变量定义的键使用这种语法。
这是因为解析器是以这种方式编写的。
而且它比$variable =""更可读,witch的意思是$variable now has value""而不是'key' =>""作为In array at position 'key' there is value""的意思。