Ассоциативные массивы
Ассоциативные массивы представляют подвид массивов, в которых, в отличие от обычных массивов, в качестве ключа применяются строки.
При создании ассоциативного массива мы явным образом указываем ключ элемента, после которого идет оператор =>
и значение элемента.
Например, создание ассоциативного массива с помощью функции array()
:
$words = array("red" => "красный", "blue" => "синий", "green" => "зеленый");
Здесь создается массив $words
из трех элементов. Например, первый элемент имеет ключ "red", а значение - "красный"
.
Создание аналогичного массива с помощью квадратных скобок:
$words = ["red" => "красный", "blue" => "синий", "green" => "зеленый"];
Используя ключ, также как и в обычных массивах, можно обратиться к элементу массива, например, получить или изменить его значение:
<?
$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
Также необязательно инициализировать переменную массива при ее определении. Можно, как с обычными массивами, добавлять элементы по ходу:
<?
$countries["Germany"] ="Berlin";
$countries["France"] ="Paris";
$countries["Spain"] ="Madrid";
$countries["Italy"] = "Rome";
echo $countries["Italy"]; // Rome
Для перебора ассоциативного массива применяется цикл foreach
:
<?
$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