【问题标题】:Is there any reason for using => instead of = in PHP when assign a value to array?为数组赋值时,是否有任何理由在 PHP 中使用 => 而不是 =?
【发布时间】:2018-03-02 16:57:27
【问题描述】:

请注意,我已经阅读了 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 是这样设计的有什么特殊原因吗?

【问题讨论】:

  • Use of => in PHP的可能重复
  • 可能是因为= 是专门将右边的值赋值给左边的变量,而数组键不是变量(它们是数组键),所以需要其他东西作为符号代表那个
  • Related/也许是骗子?
  • @MasivuyeCokile 这不是这个问题的重复,因为我在问为什么 => 使用而不是 =。请不要在未仔细阅读问题的情况下将问题标记为重复问题。请...
  • @IamtheMostStupidPerson 如果您知道它的用途,那么您就会知道为什么使用它而不是赋值运算符

标签: php


【解决方案1】:

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

$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' 了吗?还是只用作钥匙?

如您所见,这样解析器会非常混乱,并且无法使用这种语法允许由变量定义的键。

【讨论】:

    【解决方案2】:

    因为解析器是这样写的。

    而且它比$variable = "" 更易读,witch 的意思是$variable now has value "" 而不是'key' => "" 作为In array at position 'key' there is value ""

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 2010-12-31
      • 1970-01-01
      • 2021-10-05
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 2017-02-14
      相关资源
      最近更新 更多