Expressions And Operators: Assignment

The assignment operator = assigns the value of the right-hand operand to the left-hand operand. For example:

$a = 10;

Element Assignment

We can assign to array elements, as follows:

$v = vec[1, 2, 3];

$v[0] = 42; // $v is now vec[42, 2, 3]

$v = dict[0 => 10, 1 => 20, 2 => 30];
$v[1] = 22;     // change the value of the element with key 1
$v[-10] = 19;   // insert a new element with key -10

For vec, indexes must be within the range of the existing values. Use $v[] = new_value; to append new values.

For dict, we can insert at arbitrary keys.

$d = dict['x' => 1];
$d['y'] = 42; // $d is now dict['x' => 1, 'y' => 42]

Strings can also be assigned like arrays. However, it is possible to assign beyond the end of the string. The string will be extended with spaces as necessary.

$s = "ab";
$s[0] = "x"; // in bounds
$s[3] = "y"; // $s is now "xb y"

Compound Assignments

Infix operators in Hack have a corresponding compound assignment operator. For example, + has compound assignment operator +=.

$x += 10;

// Equivalent to:
$tmp = $x + 10;
$x = $tmp;

The complete set of compound-assignment operators is: **=, *=, /=, %=, +=, -=, .=, <<=, >>=, &=, ^=, |=, and ??=.