Использование массивов
Основное назначение массивов в PHP — организация групп связанных значений. Каждый элемент массива имеет индекс (ключ) и значение. Индекс элемента массива указывается в квадратных скобках после имени массива. Для того, чтобы обратиться к пятому элементу массива $array1, надо написать:
Помните, что по умолчанию массив начинается не с первого элемента, а с нулевого.
Индекс может быть как числом, так и текстовой строкой. Массив со строковыми индексами называют ассоциативным, а сами индексы — именами элементов. Например, цены на товары хранятся в ассоциативном массиве $prices, индексами которого являются наименования товаров. Чтобы получить значение цены на конкретный товар, надо написать:
Значение элемента массива может иметь любой тип. Возможна организация многомерных массивов, так как элемент массива может в свою очередь являться массивом. Примеры обращений к элементам многомерных массивов:
Создание массива
Массив можно создать с помощью функции array(), параметры которой и составляют массив. Параметры могут задаваться парами «ключ=>значение». Если при создании массива ключ не указывается, то индекс определяется положением элемента в массиве (начиная с 0). Например:
Массивы можно создать и другим способом — непосредственно. Например:
Индексы элементов неассоциативного массива можно не указывать. PHP автоматически вычислит их. Если же указать индексы таким образом:
то в массиве будет два элемента, причем последний с индексом 5. Элементы 1 — 4 не инициализируются.
Можно создать массив с помощью функции array(), а затем добавить к нему новый элемент:
Подсчет количества элементов
Количество элементов в массиве можно определить с помощью функций count() или sizeof().
Пример 1
Для доступа к последнему элементу надо вычесть 1 из размера массива, так как индексация массива начинается с нуля. Для вывода зарезервированного символа «$» перед знаком доллара стоит символ обратной косой черты «\».
Частоту вхождения элементов в массив можно определить с помощью функции array_count_values(). Эта функция возвращает массив, в котором ключами являются элементы исследуемого массива, а значениями — частоты их вхождения в исследуемый массив.
Пример 2
Функция print_r() отображает ключи и значения массива, указанного в аргументе.
Просмотр массива в цикле
Для итерационного просмотра содержимого массива служит функция foreach. С ее помощью можно просмотреть и простой (проиндексированный числами) массив, и ассоциативный, и многомерный.
Пример 3
Пример 4
Пример 5
print_r — Вывод всех эллементов массива. Удобная функция для отладки.
Управление массивами
Для управление массивами в PHP существует целый ряд специализированных функций. Наиболее употребимыми являются:
- + — объединение массивов. $ar=$ar1+$ar2
- == — сравнение массивов. Оператор вернёт true если все пары (ключ:значение) из первого массива совпадут с содержанием второго массива.
- === — идентичность массивов. Оператор вернёт true если:
- содержат одно и тоже количество элементов;
- ключи и значения элементов одинаковы в обоих массивах;
- порядок элементов;
- абсолютное совпадение по типам данных у значений элементов.
Пример 6
Пример 7
Пример 8
Пример 9
Пример 10
Имеет три параметра: сам массив, смещение и длину выделяемого фрагмента. При положительном смещении отсчет выполняется от начала массива, при отрицательном — от конца. При положительной длине результирующий фрагмент будет содержать заданное число элементов. При отрицательной длине последним элементом фрагмента станет тот, который находится на указанном расстоянии от конца массива. Если параметр опущен, то фрагмент будет содержать все элементы от начального смещения и до конца массива.
Пример 11
Сортировки
Сортировать можно как простые, так и ассоциативные массивы. Для сортировки массивов в PHP существуют определенные функции:
- sort() — сортирует массив в алфавитном порядке, если хотя бы один из его элементов является строкой, и в числовом порядке, если все его элементы — числа.
- rsort() — работает как sort( ), но в обратном порядке.
- asort() — сортирует ассоциативный массив; работает как sort( ), но сохраняет имена элементов.
- arsort() — работает как asort( ), но в обратном порядке.
- ksort() — сортирует ассоциативный массив по именам элементов.
- krsort() — работает как ksort( ), но в обратном порядке.
array_push
array_push() treats array as a stack, and pushes the passed variables onto the end of array . The length of array increases by the number of variables pushed. Has the same effect as:
Note: If you use array_push() to add one element to the array, it's better to use $array[] = because in that way there is no overhead of calling a function.
Note: array_push() will raise a warning if the first argument is not an array. This differed from the $var[] behaviour where a new array was created, prior to PHP 7.1.0.
Parameters
The input array.
The values to push onto the end of the array .
Return Values
Returns the new number of elements in the array.
Changelog
Version Description 7.3.0 This function can now be called with only one parameter. Formerly, at least two parameters have been required. Examples
Example #1 array_push() example
The above example will output:
See Also
- array_pop() — Pop the element off the end of array
- array_shift() — Shift an element off the beginning of array
- array_unshift() — Prepend one or more elements to the beginning of an array
User Contributed Notes 36 notes
If you’re going to use array_push() to insert a «$key» => «$value» pair into an array, it can be done using the following:
It is not necessary to use array_push.
I’ve done a small comparison between array_push() and the $array[] method and the $array[] seems to be a lot faster.
<?php
$array = array();
for ( $x = 1 ; $x <= 100000 ; $x ++)
<
$array [] = $x ;
>
?>
takes 0.0622200965881 seconds<?php
$array = array();
for ( $x = 1 ; $x <= 100000 ; $x ++)
<
array_push ( $array , $x );
>
?>
takes 1.63195490837 secondsso if your not making use of the return value of array_push() its better to use the $array[] way.
Hope this helps someone.
Rodrigo de Aquino asserted that instead of using array_push to append to an associative array you can instead just do.
. but this is actually not true. Unlike array_push and even.
. Rodrigo’s suggestion is NOT guaranteed to append the new element to the END of the array. For instance.
$data[‘one’] = 1;
$data[‘two’] = 2;
$data[‘three’] = 3;
$data[‘four’] = 4;. might very well result in an array that looks like this.
[ «four» => 4, «one» => 1, «three» => 3, «two» => 2 ]
I can only assume that PHP sorts the array as elements are added to make it easier for it to find a specified element by its key later. In many cases it won’t matter if the array is not stored internally in the same order you added the elements, but if, for instance, you execute a foreach on the array later, the elements may not be processed in the order you need them to be.
If you want to add elements to the END of an associative array you should use the unary array union operator (+=) instead.
$data[‘one’] = 1;
$data += [ «two» => 2 ];
$data += [ «three» => 3 ];
$data += [ «four» => 4 ];You can also, of course, append more than one element at once.
$data[‘one’] = 1;
$data += [ «two» => 2, «three» => 3 ];
$data += [ «four» => 4 ];Note that like array_push (but unlike $array[] =) the array must exist before the unary union, which means that if you are building an array in a loop you need to declare an empty array first.
$data = [];
for ( $i = 1; $i < 5; $i++ ) <
$data += [ «element$i» => $i ];
>. which will result in an array that looks like this.
[ «element1» => 1, «element2» => 2, «element3» => 3, «element4» => 4 ]
Unfortunately array_push returns the new number of items in the array
It does not give you the key of the item you just added, in numeric arrays you could do -1, you do however need to be sure that no associative key exists as that would break the assumptionIt would have been better if array_push would have returned the key of the item just added like the below function
(perhaps a native variant would be a good idea. )if(! function_exists ( ‘array_add’ )) <
function array_add (array & $array , $value /*[, $. ]*/ ) <
$values = func_get_args (); //get all values
$values [ 0 ]= & $array ; //REFERENCE!
$org = key ( $array ); //where are we?
call_user_func_array ( ‘array_push’ , $values );
end ( $array ); // move to the last item
$key = key ( $array ); //get the key of the last item
if( $org === null ) <
//was at eof, added something, move to it
return $key ;
>elseif( $org <( count ( $array )/ 2 )) < //somewhere in the middle +/- is fine
reset ( $array );
while ( key ( $array ) !== $org ) next ( $List );
>else <
while ( key ( $array ) !== $org ) prev ( $List );
>
return $key ;
>
>
echo «<pre>\n» ;
$pr = array( ‘foo’ => ‘bar’ , ‘bar’ => ‘foo’ );
echo «Taken array;» ;
print_r ( $pr );echo «\npush 1 returns » . array_push ( $pr , 1 ). «\n» ;
echo «————————————\n» ;
$pr = array( ‘foo’ => ‘bar’ , ‘bar’ => ‘foo’ );
echo «\npush 2 returns » . array_push ( $pr , 1 , 2 ). «\n» ;
echo «————————————\n» ;
$pr = array( ‘foo’ => ‘bar’ , ‘bar’ => ‘foo’ );
echo «\n add 1 returns » . array_add ( $pr , 2 ). «\n\n» ;
echo «————————————\n» ;
$pr = array( ‘foo’ => ‘bar’ , ‘bar’ => ‘foo’ );
echo «\n add 2 returns » . array_add ( $pr , 1 , 2 ). «\n\n» ;
echo «<pre/>\n\n» ;
?>
Outputs:
Taken array;Array
(
[foo] => bar
[bar] => foo
)Массивы
На самом деле массив в PHP — это упорядоченное отображение, которое устанавливает соответствие между значением и ключом. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хэш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стек, очередь и, возможно, что-то еще. Так как значением массива может быть другой массив PHP, можно также создавать деревья и многомерные массивы.
Объяснение этих структур данных выходит за рамки данного справочного руководства, но вы найдете как минимум один пример по каждой из них. За дополнительной информацией вы можете обратиться к соответствующей литературе по этой обширной теме.
Синтаксис
Определение при помощи array()
Массив (тип array ) может быть создан языковой конструкцией array() . language construct. В качестве параметров она принимает любое количество разделенных запятыми пар key => value (ключ => значение).
Запятая после последнего элемента массива необязательна и может быть опущена. Обычно это делается для однострочных массивов, т.е. array(1, 2) предпочтительней array(1, 2, ). Для многострочных массивов с другой стороны обычно используется завершающая запятая, так как позволяет легче добавлять новые элементы в конец массива.
Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов, который заменяет языковую конструкцию array() на [].
Пример #1 Простой массив
key может быть либо типа integer , либо типа string . value может быть любого типа.
- Строки, содержащие целое число будут преобразованы к типу integer . Например, ключ со значением "8" будет в действительности сохранен со значением 8. С другой стороны, значение "08" не будет преобразовано, так как оно не является корректным десятичным целым.
- Числа с плавающей точкой (тип float ) также будут преобразованы к типу integer , т.е. дробная часть будет отброшена. Например, ключ со значением 8.7 будет в действительности сохранен со значением 8.
- Тип bool также преобразовываются к типу integer . Например, ключ со значением true будет сохранен со значением 1 и ключ со значением false будет сохранен со значением 0.
- Тип null будет преобразован к пустой строке. Например, ключ со значением null будет в действительности сохранен со значением "".
- Массивы (тип array ) и объекты (тип object ) не могут использоваться в качестве ключей. При подобном использовании будет генерироваться предупреждение: Недопустимый тип смещения (Illegal offset type).
Если несколько элементов в объявлении массива используют одинаковый ключ, то только последний будет использоваться, а все другие будут перезаписаны.
Пример #2 Пример преобразования типов и перезаписи элементов
Результат выполнения данного примера:
Так как все ключи в вышеприведенном примере преобразуются к 1, значение будет перезаписано на каждый новый элемент и останется только последнее присвоенное значение "d".
Массивы в PHP могут содержать ключи типов integer и string одновременно, так как PHP не делает различия между индексированными и ассоциативными массивами.
Пример #3 Смешанные ключи типов integer и string
Результат выполнения данного примера:
Параметр key является необязательным. Если он не указан, PHP будет использовать предыдущее наибольшее значение ключа типа integer , увеличенное на 1.
Пример #4 Индексированные массивы без ключа
Результат выполнения данного примера:
Возможно указать ключ только для некоторых элементов и пропустить для других:
Пример #5 Ключи для некоторых элементов
Результат выполнения данного примера:
Как вы видите последнее значение "d" было присвоено ключу 7. Это произошло потому, что самое большое значение ключа целого типа перед этим было 6.
Доступ к элементам массива с помощью квадратных скобок
Доступ к элементам массива может быть осуществлен с помощью синтаксиса array[key].
Пример #6 Доступ к элементам массива
var_dump ( $array [ «foo» ]);
var_dump ( $array [ 42 ]);
var_dump ( $array [ «multi» ][ «dimensional» ][ «array» ]);
?>Результат выполнения данного примера:
Замечание:
Для доступа к элементам массива могут использоваться как квадратные, так и фигурные скобки (например, $array[42] и $array означают одно и то же в вышеприведенном примере).
С PHP 5.4 стало возможным прямое разыменование массива, возвращаемого в качестве результата вызова функции или метода. Раньше приходилось использовать временные переменные.
С PHP 5.5 стало возможным прямое разыменование элементов у литерала массива.
Пример #7 Разыменование массива
<?php
function getArray () <
return array( 1 , 2 , 3 );
>// в PHP 5.4
$secondElement = getArray ()[ 1 ];// ранее делали так
$tmp = getArray ();
$secondElement = $tmp [ 1 ];// или так
list(, $secondElement ) = getArray ();
?>Замечание:
Попытка доступа к неопределенному ключу в массиве — это то же самое, что и попытка доступа к любой другой неопределенной переменной: будет сгенерирована ошибка уровня E_NOTICE , и результат будет NULL .
Создание/модификация с помощью синтаксиса квадратных скобок
Существующий массив может быть изменен явной установкой значений в нем.
Это выполняется присвоением значений массиву array с указанием в скобках ключа. Кроме того, вы можете опустить ключ. В этом случае добавьте к имени переменной пустую пару скобок ([]).
Если массив $arr еще не существует, он будет создан. Таким образом, это еще один способ определить массив array . Однако такой способ применять не рекомендуется, так как если переменная $arr уже содержит некоторое значение (например, значение типа string из переменной запроса), то это значение останется на месте и [] может на самом деле означать доступ к символу в строке. Лучше инициализировать переменную путем явного присваивания значения.
Для изменения определенного значения просто присвойте новое значение элементу, используя его ключ. Если вы хотите удалить пару ключ/значение, вам необходимо использовать функцию unset() .
<?php
$arr = array( 5 => 1 , 12 => 2 );$arr [] = 56 ; // В этом месте скрипта это
// то же самое, что и $arr[13] = 56;$arr [ «x» ] = 42 ; // Это добавляет к массиву новый
// элемент с ключом «x»unset( $arr [ 5 ]); // Это удаляет элемент из массива
unset( $arr ); // Это удаляет массив полностью
?>Замечание:
Как уже говорилось выше, если ключ не был указан, то будет взят максимальный из существующих целочисленных ( integer ) индексов, и новым ключом будет это максимальное значение (в крайнем случае 0) плюс 1. Если целочисленных индексов еще нет, то ключом будет 0 (ноль).
Учтите, что максимальное целое значение ключа не обязательно существует в массиве в данный момент. Оно могло просто существовать в массиве какое-то время, с тех пор как он был переиндексирован в последний раз. Следующий пример это иллюстрирует:
<?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 );
?>Результат выполнения данного примера:
Полезные функции
Для работы с массивами существует достаточное количество полезных функций. Смотрите раздел функции для работы с массивами.
Замечание:
Функция unset() позволяет удалять ключи массива. Обратите внимание, что массив НЕ будет переиндексирован. Если вы действительно хотите поведения в стиле "удалить и сдвинуть", можно переиндексировать массив используя array_values() .
<?php
$a = array( 1 => ‘один’ , 2 => ‘два’ , 3 => ‘три’ );
unset( $a [ 2 ]);
/* даст массив, представленный так:
$a = array(1 => ‘один’, 3 => ‘три’);
а НЕ так:
$a = array(1 => ‘один’, 2 => ‘три’);
*/$b = array_values ( $a );
// Теперь $b это array(0 => ‘один’, 1 => ‘три’)
?>Управляющая конструкция foreach существует специально для массивов. Она предоставляет возможность легко пройтись по массиву.
Что можно и нельзя делать с массивами
Почему $foo[bar] неверно?
Всегда заключайте в кавычки строковый литерал в индексе ассоциативного массива. К примеру, пишите $foo['bar'], а не $foo[bar]. Но почему? Часто в старых скриптах можно встретить следующий синтаксис:
This is wrong, but it works. The reason is that this code has an undefined constant (bar) rather than a string ('bar' — notice the quotes). PHP may in the future define constants which, unfortunately for such code, have the same name. It works because PHP automatically converts a bare string (an unquoted string which does not correspond to any known symbol) into a string which contains the bare string . For instance, if there is no defined constant named bar , then PHP will substitute in the string 'bar' and use that.
Замечание: Это не означает, что нужно всегда заключать ключ в кавычки. Нет необходимости заключать в кавычки константы или переменные, поскольку это помешает PHP обрабатывать их.
Результат выполнения данного примера:
Дополнительные примеры, демонстрирующие этот факт:
<?php
// Показываем все ошибки
error_reporting ( E_ALL );$arr = array( ‘fruit’ => ‘apple’ , ‘veggie’ => ‘carrot’ );
// Верно
print $arr [ ‘fruit’ ]; // apple
print $arr [ ‘veggie’ ]; // carrot// Неверно. Это работает, но из-за неопределенной константы с
// именем fruit также вызывает ошибку PHP уровня E_NOTICE
//
// Notice: Use of undefined constant fruit — assumed ‘fruit’ in.
print $arr [ fruit ]; // apple// Давайте определим константу, чтобы продемонстрировать, что
// происходит. Мы присвоим константе с именем fruit значение ‘veggie’.
define ( ‘fruit’ , ‘veggie’ );// Теперь обратите внимание на разницу
print $arr [ ‘fruit’ ]; // apple
print $arr [ fruit ]; // carrot// Внутри строки это нормально. Внутри строк константы не
// рассматриваются, так что ошибки E_NOTICE здесь не произойдет
print «Hello $arr [ fruit ] » ; // Hello apple// С одним исключением: фигурные скобки вокруг массивов внутри
// строк позволяют константам там находиться
print «Hello < $arr [ fruit ]>» ; // Hello carrot
print «Hello < $arr [ 'fruit' ]>» ; // Hello apple// Это не будет работать и вызовет ошибку обработки, такую как:
// Parse error: parse error, expecting T_STRING’ or T_VARIABLE’ or T_NUM_STRING’
// Это, конечно, также действует и с суперглобальными переменными в строках
print «Hello $arr [ ‘fruit’]» ;
print «Hello $_GET [ ‘foo’]» ;// Еще одна возможность — конкатенация
print «Hello » . $arr [ ‘fruit’ ]; // Hello apple
?>Если вы переведете error_reporting в режим отображения ошибок уровня E_NOTICE (например, такой как E_ALL ), вы сразу увидите эти ошибки. По умолчанию error_reporting установлена их не отображать.
Как указано в разделе синтаксис, внутри квадратных скобок ('[' и ']') должно быть выражение. Это означает, что можно писать вот так:
Это пример использования возвращаемого функцией значения в качестве индекса массива. PHP известны также и константы:
Обратите внимание, что E_ERROR — это такой же верный идентификатор, как и bar в первом примере. Но последний пример по сути эквивалентен такой записи:
поскольку E_ERROR соответствует 1, и т.д.
Так что же в этом плохого?
Когда-нибудь в будущем, команда разработчиков PHP, возможно, пожелает добавить еще одну константу или ключевое слово, либо константа из другого кода может вмешаться и тогда у вас могут возникнуть проблемы. Например, вы уже не можете использовать таким образом слова empty и default, поскольку они являются зарезервированными ключевыми словами.
Замечание: Повторим, внутри строки ( string ), заключенной в двойные кавычки, корректно не окружать индексы массива кавычками, поэтому "$foo[bar]" является верной записью. Более подробно почему — смотрите вышеприведенные примеры, а также раздел обработка переменных в строках.
Преобразование в массив
Для любого из типов: integer , float , string , boolean и resource , преобразование значения в массив дает результатом массив с одним элементом (с индексом 0), являющимся скалярным значением, с которого вы начали. Другими словами, (array)$scalarValue — это точно то же самое, что и array($scalarValue).
Если вы преобразуете в массив объект ( object ), вы получите в качестве элементов массива свойства (переменные-члены) этого объекта. Ключами будут имена переменных-членов, с некоторыми примечательными исключениями: целочисленные свойства станут недоступны; к закрытым полям класса (private) спереди будет дописано имя класса; к защищенным полям класса (protected) спереди будет добавлен символ '*'. Эти добавленные значения с обоих сторон также имеют нулевые байты. Это может вызвать несколько неожиданное поведение:
class A <
private $A ; // Это станет ‘\0A\0A’
>class B extends A <
private $A ; // Это станет ‘\0B\0A’
public $AA ; // Это станет ‘AA’
>Вышеприведенный код покажет 2 ключа с именем 'AA', хотя один из них на самом деле имеет имя '\0A\0A'.
Если вы преобразуете в массив значение NULL , вы получите пустой массив.
Сравнение
Массивы можно сравнивать при помощи функции array_diff() и операторов массивов.
Примеры
The array type in PHP is very versatile. Here are some examples: Тип массив в PHP является очень гибким, вот несколько примеров:
<?php
// это
$a = array( ‘color’ => ‘red’ ,
‘taste’ => ‘sweet’ ,
‘shape’ => ’round’ ,
‘name’ => ‘apple’ ,
4 // ключом будет 0
);$b = array( ‘a’ , ‘b’ , ‘c’ );
// . . .полностью соответствует
$a = array();
$a [ ‘color’ ] = ‘red’ ;
$a [ ‘taste’ ] = ‘sweet’ ;
$a [ ‘shape’ ] = ’round’ ;
$a [ ‘name’ ] = ‘apple’ ;
$a [] = 4 ; // ключом будет 0// после выполнения этого кода, $a будет массивом
// array(‘color’ => ‘red’, ‘taste’ => ‘sweet’, ‘shape’ => ’round’,
// ‘name’ => ‘apple’, 0 => 4), а $b будет
// array(0 => ‘a’, 1 => ‘b’, 2 => ‘c’), или просто array(‘a’, ‘b’, ‘c’).
?>Пример #8 Использование array()
<?php
// Массив как карта (свойств)
$map = array( ‘version’ => 4 ,
‘OS’ => ‘Linux’ ,
‘lang’ => ‘english’ ,
‘short_tags’ => true
);// исключительно числовые ключи
$array = array( 7 ,
8 ,
0 ,
156 ,
— 10
);
// это то же самое, что и array(0 => 7, 1 => 8, . )$switching = array( 10 , // ключ = 0
5 => 6 ,
3 => 7 ,
‘a’ => 4 ,
11 , // ключ = 6 (максимальным числовым индексом было 5)
‘8’ => 2 , // ключ = 8 (число!)
’02’ => 77 , // ключ = ’02’
0 => 12 // значение 10 будет перезаписано на 12
);// пустой массив
$empty = array();
?>Пример #9 Коллекция
<?php
$colors = array( ‘red’ , ‘blue’ , ‘green’ , ‘yellow’ );foreach ( $colors as $color ) <
echo «Вам нравится $color ?\n» ;
>Результат выполнения данного примера:
Изменение значений массива напрямую стало возможным с версии PHP 5 путем передачи их по ссылке. До этого необходим следующий обходной прием:
Пример #10 Изменение элемента в цикле
<?php
// PHP 5
foreach ( $colors as & $color ) <
$color = strtoupper ( $color );
>
unset( $color ); /* это нужно для того, чтобы последующие записи в
$color не меняли последний элемент массива */// Обходной прием для старых версий
foreach ( $colors as $key => $color ) <
$colors [ $key ] = strtoupper ( $color );
>Результат выполнения данного примера:
Следующий пример создает массив, начинающийся с единицы.
Пример #11 Индекс, начинающийся с единицы
Результат выполнения данного примера:
Пример #12 Заполнение массива
Массивы упорядочены. Вы можете изменять порядок элементов, используя различные функции сортировки. Для дополнительной информации смотрите раздел функции для работы с массивами. Вы можете подсчитать количество элементов в массиве с помощью функции count() .
Пример #13 Сортировка массива
Поскольку значение массива может быть чем угодно, им также может быть другой массив. Таким образом вы можете создавать рекурсивные и многомерные массивы.
Пример #14 Рекурсивные и многомерные массивы
<?php
$fruits = array ( «фрукты» => array ( «a» => «апельсин» ,
«b» => «банан» ,
«c» => «яблоко»
),
«числа» => array ( 1 ,
2 ,
3 ,
4 ,
5 ,
6
),
«дырки» => array ( «первая» ,
5 => «вторая» ,
«третья»
)
);// Несколько примеров доступа к значениям предыдущего массива
echo $fruits [ «дырки» ][ 5 ]; // напечатает «вторая»
echo $fruits [ «фрукты» ][ «a» ]; // напечатает «апельсин»
unset( $fruits [ «дырки» ][ 0 ]); // удалит «первая»// Создаст новый многомерный массив
$juices [ «apple» ][ «green» ] = «good» ;
?>Обратите внимание, что при присваивании массива всегда происходит копирование значения. Чтобы скопировать массив по ссылке, вам нужно использовать оператор ссылки.
<?php
$arr1 = array( 2 , 3 );
$arr2 = $arr1 ;
$arr2 [] = 4 ; // $arr2 изменился,
// $arr1 все еще array(2, 3)$arr3 = & $arr1 ;
$arr3 [] = 4 ; // теперь $arr1 и $arr3 одинаковы
?>Работа с массивами PHP – создание, наполнение, удаление
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
Создание массивов
Создать массив и заполнить его значениями
Можно применить функцию array_fill($start, $size, $value) , которая создаст массив с количеством $size элементов со значением $value , начиная с индекса $start .
Данный пример создает массив с тремя элементам «текст», ключи которых будут начинаться с нуля.
Результат:
Еще вариант – функция explode($delimiter, $string) , которая из строки $string создаст массив используя разделитель $delimiter , в данном примере запятая.
Результат:
Узнать количество элементов в массиве
Если массив ассоциативный (многомерный), то count() вернёт количество элементов только первого уровня. Чтобы получит количество всех элементов нужно использовать константу COUNT_RECURSIVE .
Добавление элементов в массив
Добавить значение в начало массива
array_unshift($array, $value) – добавляет одно или несколько элементов в начало массива.
Результат:
Добавить значение в конец массива
array_push($array, $value) – добавляет значение в конец массива.
Результат:
Работа с ключами массива
Поучить первый ключ массива
Функция array_key_first($array) — получает первый ключ массива. Появилась в версии PHP 7.3, для более ранних версий:
Поучить последний ключ массива
Функция array_key_last($array) — получает последний ключ массива. Появилась в версии PHP 7.3, для более ранних версий: