Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Создание/модификация с помощью синтаксиса квадратных скобок

Читайте также:
  1. Ferrite calibration калибровка катушки с помощью феррита.
  2. V1: Управление запасами и складскими процессами с помощью логистики
  3. XVII. Укажите номера предложений в которых –ing-форма переводится на русский язык с помощью слова «будучи» и страдательного причастия.
  4. А. Включение и отключение блока управления с помощью переключателя
  5. Анализ устойчивости с помощью логарифмических амплитудно-частотных характеристик
  6. Б) Пишется обычными буквами без скобок
  7. Воспроизведение направляющей функции при рабочем и латерально-выдвигающем движениях нижней челюсти с помощью резцовой направляющей подставки

Lt;?php

$arr = array();

$arr['car'] = 'Чайка';

?>

Массив $arr содержит одну пару значений. Ключом в ней будет значение 'car', а значением - 'Чайка'.

Значение ключей может быть текстового или числового типа, причем в одном массиве допускается применение ключей разных типов. Например, следующий код вполне работоспособен:

Lt;?php

$arr = array();

$arr['car'] = 'Чайка';

$arr['age'] = 100;

$arr[10] = 'Элемент с ключом 10 ';

?>

Иногда нет необходимости задавать ключи элементов. В этом случае можно воспользоваться тем, что PHP может создавать ключи автоматически при добавлении элементов в массив. Ключи всегда будут числовыми и начинаться с нуля. Например:

Lt;?php

Эти два объявления массива эквивалентны

$arr = array('первый', 'второй', 'третий');

И

$arr = array(0=>'первый', 1=>'второй', 2=>'третий');

?>

Сочетание "=>" используется для отделения ключа от значения в элементе при объявлении массива.

Обращение к отдельному элементу массива производится по его индексу или ключу:

Lt;?php

$arr = array('первый', 'второй', 'третий');

$first = $arr[0];

?>

А с помощью конструкции foreach можно быстро перебрать все элементы массива:

Lt;?php

$arr = array('первый', 'второй', 'третий');

foreach($arr as $key=>$value)

echo "Элемент массива номер $key равен '$value'";

?>

Для работы с архивами в PHP предусмотрен ряд функций, позволяющих выполнить набор стандартных операций, таких как сортировка, поиск или разворот массива. Рассмотрим наиболее используемые функции.

array_chunk() Служит для разделения массива на части заданного размера. Функция возвращает массив из фрагментов исходного массива. <?php $arr = array('а', 'б', 'в', 'г', 'д'); $arr_chunked = array_chunk($arr, 3); // $arr_chunked[0] содержит 'а', 'б', 'в' // $arr_chunked[1] содержит 'г', 'д' ?>
array_combine() Функция объединяет два массива так, что элементы первого становятся ключами, а элементы второрого - значениями результирующего ассоциативного массива. <?php $keys = array(0, 1, 2); $vals = array('а', 'б', 'в'); $res = array_combine($keys, $vals); // $res содержит 0=>'а', 1=>'б', 2=>'в' ?>
array_count_values() Подсчитывает количество уникальных значений в массиве и частоту их появления <?php $arr = array('а', 'б', 'в', 'а', 'в', 'а'); $res = array_count_values($arr); // $res содержит 'а' => 3, 'б' => 1, 'в' => 2 ?>
array_diff() Функция выделяет разницу двух массивов, т.е. элементы, которые есть в первом массиве и нет во втором. <?php $arr1 = array('а', 'а', 'в'); $arr2 = array('а', 'б', 'в'); $res = array_diff($arr1, $arr2); // $res содержит 'б' ?>
array_fill() Заполняет массив заданным значением <?php $arr = array(); $res = array_fill(2, 3, 'xxx'); // $res содержит 2=>'xxx' 3=>'xxx' 4=>'xxx' ?>
array_flip() Меняет местами ключи и значения ассоциативного массива <?php $arr = array(0=>'а', 1=>'б', 2=>'в'); $res = array_flip($arr); // $res содержит 'а'=>0, 'б'=>1, 'в'=>2 ?>
array_intersect() Функция вычисляет пересечение двух массивов, т.е. выдаёт все элементы, которые есть одновременно в обоих массивах. <?php $arr1 = array('а', 'а', 'в'); $arr2 = array('а', 'б', 'в'); $res = array_diff($arr1, $arr2); // $res содержит 'а', 'в' ?>
array_key_exists() Функция проверяет, имеется ли в массиве ключ с таким именем. <?php $arr = array(0=>'а', 1=>'б', 2=>'в'); if(array_key_exists(1, $arr) echo 'Ключ найден'; else echo 'Ключ не найден'; ?>
array_keys() Возвращает массив ключей <?php $arr = array(0=>'а', 1=>'б', 2=>'в'); $res = array_keys($arr); // $res содержит 0, 1, 2 ?>
array_merge() Объединяет один или более массивов. Значения элементов с одинаковыми ключами заменяется элементами второго массива <?php $arr1 = array(0=>'а', 1=>'а', 2=>'в'); $arr2 = array(3=>'а', 0=>'б', 4=>'в'); $res = array_merge($arr1, $arr2); // $res содержит 0=>'б', 1=>'а', 2=>'в', 3=>'а', 4=>'в' ?>
array_rand() Возвращает один случайный элемент из массива <?php $arr = array('а', 'б', 'в'); $res = array_rand($arr, 1); // $res[0] содержит один случайный элемент из $arr ?>
array_reverse() Возвращает исходный массив, но в обратном поряде, т.е. прочитанный от конца к началу. <?php $arr = array('а', 'б', 'в'); $res = array_reverse($arr); // $res содержит 'в', 'б', 'а' ?>
array_search() Функция производит поиск элемента массива, соответствующего заданным условиям. Возвращает имя соответствующего ключа. <?php $arr = array(11=>'а', 22=>'б', 33=>'в'); $key = array_search('б', $arr); // $key равен 22 ?>
array_shift() Сдвигает все элементы массива к началу, при этом первый элемент массива теряется. <?php $arr = array('а', 'б', 'в'); $res = array_shift($arr); // $res содержит 'б', 'в' ?>
array_slice() Извлекает фрагмент массива <?php $arr = array('а', 'б', 'в'); $res = array_slice($arr, 1, 2); // $res содержит 'б', 'в' ?>
array_sum() Функция возвращает сумму всех значений массива <?php $arr = array(100, 200, 300); $sum = array_sum($arr); // $sum равно 600 ?>
array_unique() Удаляет повторяющиеся значения из массива <?php $arr = array(100, 200, 200, 300); $res = array_unique($arr); // $res содержит 100, 200, 300 ?>
array_unshift() Функция обратная array_shift(), сдвигает все элементы к концу массива и добавляет элемент в начало. <?php $arr = array('б', 'в'); $res = array_unshift($arr, 'x', 'y'); // $res содержит 'x', 'y', 'б', 'в' ?>
array_values() Возвращает массив значений исходного массива <?php $arr = array('x'=>'а', 'y'=>'б', 'z'=>'в'); $res = array_values($arr); // $res содержит 'а', 'б', 'в' ?>
array() Функция создаёт пустой или предустановленный массив. <?php $arr_empty = array(); $arr_preset = array('x'=>'а', 'y'=>'б', 'z'=>'в'); ?>
count() Подсчитывает количество элементов в массиве <?php $arr = array('а', 'б', 'в'); echo count($arr); // выведет 3 ?>
in_array() Проверяет, существует ли в массиве указанное значение <?php $arr = array('а', 'б', 'в'); if(in_array('a', $arr)) echo 'Значение есть в массиве'; else echo 'Значения в массиве нет'; ?>
list() Оператор позволяет присвоить массив списку переменных. <?php $arr = array('Иван', 'Петрович', 'Семёнов'); list($name, $otch, $fam) = $arr; echo 'Имя: '. $name; echo 'Отчество: '. $otch; echo 'Фамилия: '. $fam; ?>
sort() Функция сортировки массива <?php $arr = array('Семён', 'Петрович', 'Иванов'); sort($arr); // $arr содержит 'Иванов', 'Петрович', 'Семён', ?>

Как видите пользоваться массивами очень просто, а главное - чрезвычайно удобно. Ни один большой проект не обходится без применения массивов. Мы расмотрели только часть доступных функций, не вдаваясь в тонкости их применения для различных ситуаций. Более подробную информацию вы сможете почерпнуть из официального руководства на сайте www.php.net.

 

На самом деле массив в PHP - это упорядоченное отображение, которое устанавливает соответствие между значением и ключем. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хэш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стэк, очередь или, возможно, как что-то еще. Поскольку вы можете иметь в качестве значения другой массив PHP, вы можете также легко эмулировать деревья.

Объяснение этих структур данных выходит за рамки данного справочного руководства, но вы найдете как минимум один пример каждой из них. За дополнительной информацией вы можете обратиться к соответствующей литературе по этой обширной теме.

Синтаксис

Определение при помощи array()

Массив может быть создан языковой конструкцией array(). В качестве параметров она принимает определенное количество разделенных запятыми пар key => value (ключ => значение).

array([ key =>] value ,... ) // key может быть integer или string // value может быть любым значением

 

<?php $arr = array("foo" => "bar", 12 => true); echo $arr["foo"]; // bar echo $arr[12]; // 1?>

key может быть либо integer, либо string. Если ключ - это стандартное представление integer, он так и будет интерпретироваться (т.е. "8" будет восприниматься как 8, тогда как "08" будет интерпретироваться как "08"). В PHP нет разницы между индексными и ассоциативными массивами; существует только один тип массива, который может содержать и числовые, и строковые индексы.

Значение может быть любого имеющегося в PHP типа.

<?php $arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42)); echo $arr["somearray"][6]; // 5 echo $arr["somearray"][13]; // 9 echo $arr["somearray"]["a"]; // 42?>

Если вы не указываете ключ для приведенного значения, то берется максимальный числовой индекс и новый ключ будет равен этому максимуму + 1. Если вы укажите ключ, которому уже присвоено значение, оно будет перезаписано.

<?php // Этот массив эквивалентен... array(5 => 43, 32, 56, "b" => 12); //...этому массиву array(5 => 43, 6 => 32, 7 => 56, "b" => 12);?>
Внимание
Начиная с PHP 4.3.0, вышеописанное поведение генерации индекса изменено. Теперь, если вы будете использовать массив, в котором максимальным в настоящий момент является отрицательный ключ, то следующий созданный ключ будет нулевым (0). Раньше новым индексом становился самый большой существующий ключ + 1, так же как и у положительных индексов.
     

Используя в качестве ключа TRUE вы получите ключ 1 типа integer. Используя в качестве ключа FALSE вы получите ключ 0 типа integer. Используя в качестве ключа NULL, вы получите пустую строку. Использование в качестве ключа пустой строки создаст (или перезапишет) ключ с пустой строкой и его значение; это не то же самое, что использование пустых квадратных скобок.

Вы не можете использовать в качестве ключей массивы или объекты. Это вызовет предупреждение: Illegal offset type ('Недопустимый тип смещения').

Создание/модификация с помощью синтаксиса квадратных скобок

Также вы можете изменять существующий массив, явно устанавливая значения в нем.

Это выполняется присвоением значений массиву при указании в скобках ключа. Кроме того, вы можете опустить ключ, в этом случае добавьте к имени переменной пустую пару скобок (" [] ").

$arr[ key ] = value; $arr[] = value; // key может быть integer или string // value может быть любым значением

Если массив $arr еще не существует, он будет создан. Таким образом, это еще один способ определить массив. Для изменения определенного значения просто присвойте элементу с его ключом новое значение. Если вы хотите удалить пару ключ/значение, вам нужно использовать функцию unset().

<?php $arr = array(5 => 1, 12 => 2); $arr[] = 56; // В этом месте скрипта это // эквивалентно $arr[13] = 56; $arr["x"] = 42; // Это добавляет к массиву новый // элемент с ключом "x" unset($arr[5]); // Это удаляет элемент из массива unset($arr); // Это удаляет массив полностью?>

Замечание: Как уже говорилось выше, если вы не укажите в скобках ключа, то будет взят максимальный из существующих целочисленных индексов, и новым ключом будет это максимальное значение + 1. Если целочисленных индексов еще нет, то ключом будет 0 (ноль). Если вы укажите ключ, которому уже присвоено значение, оно будет перезаписано.

Внимание
Начиная с PHP 4.3.0, вышеописанное поведение генерации индекса изменено. Теперь, если вы будете использовать массив, в котором максимальным в настоящий момент является отрицательный ключ, то следующий созданный ключ будет нулевым (0). Раньше новым индексом становился самый большой существующий ключ + 1, так же как и у положительных индексов.

Обратите внимание, что максимальный числовой ключ, используемый для этого не обязательно должен существовать в массиве в настоящий момент. Он просто должен был существовать с момента последнего переиндексирования массива. Это иллюстрирует следующий пример:

<?php // Создаем простой массив. $array = array(1, 2, 3, 4, 5); print_r($array); // Теперь удаляем каждый элемент, но сам массив оставляем нетронутым: foreach ($array as $i => $value) { unset($array[$i]); } print_r($array); // Создаем элемент (обратите внимание, что новым ключом будет 5, // а не 0, как вы возможно ожидали). $array[] = 6; print_r($array); // Переиндексация: $array = array_values($array); $array[] = 7; print_r($array);?>

Вышеприведенный пример выведет следующее:


Дата добавления: 2015-10-30; просмотров: 99 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
проведению ЛАБОРАТОРНого занятия| Почему $foo[bar] это неверно?

mybiblioteka.su - 2015-2024 год. (0.009 сек.)