Ассоциативные массивы представляют подвид массивов, в которых, в отличие от обычных массивов, в качестве ключа применяются строки.
При создании ассоциативного массива мы явным образом указываем ключ элемента, после которого идет оператор => и значение элемента.
Например, создание ассоциативного массива с помощью функции array()
:
$words = array("red" => "красный", "blue" => "синий", "green" => "зеленый");
Здесь создается массив $words из трех элементов. Например, первый элемент имеет ключ "red", а значение - "красный".
Создание аналогичного массива с помощью квадратных скобок:
$words = ["red" => "красный", "blue" => "синий", "green" => "зеленый"];
Используя ключ, также как и в обычных массивах, можно обратиться к элементу массива, например, получить или изменить его значение:
<?php $countries = ["Germany" => "Berlin", "France" => "Paris", "Spain" => "Madrid"]; echo $countries["Spain"]; // Madrid echo "<br />"; $countries["Spain"] = "Barcelona"; echo $countries["Spain"]; // Barcelona ?>
Результат работы скрипта:
Madrid Barcelona
Для добавления элемента с новым ключом в ассоциативный массив достаточно определить элемент с этим ключом:
$countries = ["Germany" => "Berlin", "France" => "Paris", "Spain" => "Madrid"]; $countries["Italy"] = "Rome"; // определяем новый элемент с ключом "Italy" echo $countries["Italy"]; // Rome
Также необязательно инициализировать переменную массива при ее определении. Можно, как с обычными массивами, добавлять элементы по ходу:
<?php $countries["Germany"] ="Berlin"; $countries["France"] ="Paris"; $countries["Spain"] ="Madrid"; $countries["Italy"] = "Rome"; echo $countries["Italy"]; // Rome ?>
Для перебора ассоциативного массива применяется цикл foreach:
<?php $words = ["red" => "красный", "blue" => "синий", "green" => "зеленый"]; foreach($words as $english => $russian) { echo "$english : $russian<br />"; } ?>
Результат перебора массива:
red : красный blue : синий green : зеленый
PHP позволяет использовать в одном массиве числовые и строковые индексы:
$data = [1=> "Tom", "id132" => "Sam", 56 => "Bob"]; echo $data[1]; // Tom echo "<br />"; echo $data["id132"]; // Sam