php:是否有任何使用=>而不是=;的原因


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这样设计?


语法的一致性很重要,这里我要说在数组中使用=>是为了确保=仍然有效。例如:

1
$a = 5;

将变量$a设置为5

1
$a = $b = 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""的意思。