Массивы
Массив в PHP является объектом, который ставит в соответствие ключам значения. Ключи должны быть уникальными и им должно соответствовать единственное значение. Такой объект называют отображением (map), словарем (dictionary) или ассоциативным массивом (associative array).
Массив может быть создан с помощью оператора
array([ ключ1 =>] значение1, [ ключ2 =>] значение2, …)
Ключ может быть либо целым числом типа integer (положительным или отрицательным), либо строкой (типа string), а значение может иметь любой тип (включая массивы и объекты), причем и индексы и значения в массиве могут иметь различный тип.
Пример 4.6.16. Создание массива:
$array1 = array("a1" => "First item", 2 => true);
В созданном массиве $array1 значение первого ключа является строкой, а значение второго ключа – целым числом. Значение первого элемента – строка, а значение второго элемента – булевское.
Если ключ не задан, для него берется максимальное значение целого индекса в массиве, увеличенное на 1. Если же значение целого индекса не найдено, значение первого ключа по умолчанию устанавливается равным 0.
|
|
Пример 4.6.17. Присваивание значений ключам в массиве по умолчанию:
1. Предложение создания массива
$array2 = array(5 => 0, 6 => 12, 24, "base" => 12, 48);
Создает массив с теми же значениями ключей и элементов, что и предложение
$array2 = array(5 => 0, 6 => 12, 7 => 24,
"base" => 12, 8=> 48);
2. Предложение создания массива
$array3 = array("String 1", "String 2", "String 3");
создает массив с теми же значениями ключей и элементов, что и предложение
$array3 = array(0 => "String 1", 1 => "String 2",
2 => "String 3");
Если при создании массива заданы два элемента с одинаковыми ключами, то элементом массива станет элемент с последним из заданных ключей.
Пример 4.6.18. Двойное определение ключа в массиве:
Для массива $array4, предложение о создании имеет следующий вид:
$array4 = array(0 => 1, 1 => 2, 2 => 3, 1 => 10);
значением элемента с ключом 1 станет число 10.
Для создания массива, в котором элементы можно задавать в цикле, используется функция
range(начальное-значение, конечное-значение [, приращение ])
Значение параметра приращение должно быть числом (по умолчанию значение этого параметра равно 1). Первый элемент массива будет иметь значение начальное-значение и значение ключа, равное 0. Значение второго элемента массива больше значения первого элемента на значение приращение (если конечное-значение больше, чем начальное-значение) или меньше значения первого элемента на значение приращение (если конечное-значение меньше, чем начальное-значение). Аналогичным образом определяются остальные элементы массива, кроме последнего. Последний элемент массива – это элемент, значение которого меньше или равно (если конечное-значение больше, чем начальное-значение) или больше или равно (если конечное-значение меньше, чем начальное-значение) значению параметра конечное-значение. Значения ключей для второго элемента массива равно 1, для третьего – 2 и т.д.
|
|
Пример 4.6.19. Создание массива с использованием функции range():
1. Предложение
$array5 = range(0, 5, 2);
создает массив из трех элементов со значениями 0, 2 и 4 и с ключами, равными 0, 1 и 2.
2. Предложение
$array6 = range('z', 'x');
создает массив из трех элементов со значениями 'z', 'y' и 'x' и с ключами, равными 0, 1 и 2.
Функция
compact(параметр-1 [, параметр-2...])
создает новый массив, полученный путем соединения параметров (которые могут быть как строками, содержащими имена переменных, так и именами массивов) в один массив. При этом имя переменной становится ключом, а значение переменной становится значением элемента массива. Если значение параметра не установлено, он просто пропускается.
Пример 4.6.20. Создание массива с использованием функции compact():
Следующие предложения определяют переменные
$en_word = "blue";
$ru_word_1 = "синий";
$ru_word_2 = "голубой";
$ru_word_array = array("ru_word_1", "ru_word_2");
$blue_item = compact("en_word", "nothing", $ru_word_array);
Массив $blue_item будет содержать следующие элементы (элемент nothing не войдет в массив $blue_item, т.к. он не определен):
en_word => blue
ru_word_1 => синий
ru_word_2 => голубой