1

Please note that I have already read Reference — What does this symbol mean in PHP? and What Does This Mean in PHP -> or => and I know that what => do in PHP.

My question is different.

Generally most programming languages use = to assign value to another.

Example 01

$my_name = "I am the Most Stupid Person"; //Yes, that is my name in SO :-)

Example 02

$cars = array();

$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";

Now let see following example.

$myArray = array(
    0 => 'Big',
    1 => 'Small',
    2 => 'Up',
    3 => 'Down'
);

Here is also what happen is we have assigned 'Big' for $myArray['0'].

But here we used => instead of =. Is there any special reason that PHP was designed that way?

2 Answers2

4

Consistency of syntax is important, here I would say using => in arrays is to ensure = still works. For example:

$a = 5;

Sets the variable $a to 5.

$a = $b = 5;

Sets the variable $a and $b to 5. That is = as an operator assigns the right hand side to the left hand side (if possible) and its result is also the right hand side. So now, in the context of an array:

$a = array(
    0 => 'foo'
  );

Now $a[0] is 'foo'.

$a = array(
    0 => $b = 'foo'
  );

Now $a[0] and $b are both 'foo'. Now think about this:

$b = 0;
$a = array(
    $b => 'foo'
  );

Simply means $a[$b], that is, $a[0] is 'foo'. If PHP used = for array keys:

$b = 1;
$a = array(
    $b = 'bar'
  );

What is the value of $a? Is it [1 => 'bar']? Or is it [0 => 'bar']? Did $b get the value 'bar'? Or was it only used as a key?

As you can see, the parser would be very confusing this way, and there would be no way to allow keys defined by variables with this syntax.

Aurel Bílý
  • 7,068
  • 1
  • 21
  • 34
0

It's because parser is written in that way.

Also it's more readable than $variable = "", witch means $variable now has value "" instead of 'key' => "" as In array at position 'key' there is value ""

Justinas
  • 41,402
  • 5
  • 66
  • 96