Associative arrays map string keys to values.

associative key An associative array key can be a string, letting code look up values by name.

Associative Arrays

item
associative_arrays.php
Replay: real traced execution (multi-file project)
<?php
$item = "apple";
$price = ["apple" => 2, "banana" => 3, "pear" => 4][$item];
$label = $item . ":" . $price;

echo "item=" . $item . "\n";
echo "price=" . $price . "\n";
echo "label=" . $label . "\n";
<?php
$item = "banana";
$price = ["apple" => 2, "banana" => 3, "pear" => 4][$item];
$label = $item . ":" . $price;

echo "item=" . $item . "\n";
echo "price=" . $price . "\n";
echo "label=" . $label . "\n";
<?php
$item = "pear";
$price = ["apple" => 2, "banana" => 3, "pear" => 4][$item];
$label = $item . ":" . $price;

echo "item=" . $item . "\n";
echo "price=" . $price . "\n";
echo "label=" . $label . "\n";
  1. $item ← apple, $price ← 2, $label ← apple:2

    1<?php2$item→ apple = "apple"; //@item="banana", "pear"3$price→ 2 = ["apple" => 2, "banana" => 3, "pear" => 4][$item]2;4$label→ apple:2 = $itemapple . ":" . $price2;56echo "item=" . $itemapple . "\n";7echo "price=" . $price2 . "\n";8echo "label=" . $labelapple:2 . "\n";
    outputitem=apple
    price=2
    label=apple:2
  1. $item ← banana, $price ← 3, $label ← banana:3

    1<?php2$item→ banana = "banana";3$price→ 3 = ["apple" => 2, "banana" => 3, "pear" => 4][$item]3;4$label→ banana:3 = $itembanana . ":" . $price3;56echo "item=" . $itembanana . "\n";7echo "price=" . $price3 . "\n";8echo "label=" . $labelbanana:3 . "\n";
    outputitem=banana
    price=3
    label=banana:3
  1. $item ← pear, $price ← 4, $label ← pear:4

    1<?php2$item→ pear = "pear";3$price→ 4 = ["apple" => 2, "banana" => 3, "pear" => 4][$item]4;4$label→ pear:4 = $itempear . ":" . $price4;56echo "item=" . $itempear . "\n";7echo "price=" . $price4 . "\n";8echo "label=" . $labelpear:4 . "\n";
    outputitem=pear
    price=4
    label=pear:4

Follow the Lookup

  1. $item starts as apple.
  2. The price map has apple 2, banana 3, and pear 4.
  3. Looking up $price[$item] gives 2.
  4. $label becomes apple:2.
  5. The program prints item=apple, price=2, and label=apple:2. | item | price | label | | --- | --- | --- | | apple | 2 | apple:2 | | banana | 3 | banana:3 | | pear | 4 | pear:4 |

Exercise: associative_arrays.php

Reproduce label=apple:2, then use the pinned items banana and pear to predict each price and label.