是否有任何使用=>的原因在为数组赋值时,而不是在PHP中?

时间:2017-09-21 11:01:49

标签: php

请注意,我已阅读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以这种方式设计

2 个答案:

答案 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 ""