Массивы в PHP
Массив — это ещё один тип данных, вроде числа или строки. Главное отличие массива от остальных типов данных заключается в его способности хранить в переменной больше одного значения. В предыдущих примерах имя переменной всегда ассоциировалось только с одним значением:
- $name = «Иннокентий»
- $age = 42
А если мы хотим узнать не только пол, имя и возраст пользователя, но и, допустим, любимые сериалы? Очень непросто назвать один самый любимый сериал, а вот вспомнить несколько — намного легче. Сохранение в переменную-массив нескольких значений выглядит так:
$fav_shows = ["game of thrones", "american horror story", "walking dead"];
В этом примере мы сохранили в переменной $fav_shows сразу три значения. Но сохранить эти данные — это только половина дела. Как с ними потом работать? Уже знакомый вам способ вывода переменной на экран не будет работать с массивами:
Так увидеть список любимых сериалов не получится. Дело в том, что массив — это не обычная переменная. Массив хранит не простые типы, вроде текста или чисел (их ещё называют «скалярными типами»), а более сложную структуру данных, поэтому здесь нужен особый подход.
Внутри массива у каждого значения есть адрес, по которому к нему можно обратиться. Такой адрес называется индексом. Индекс — это просто порядковый номер значения внутри массива. Индексация начинается с нуля, так что первый элемент получает индекс — 0 , второй — 1 , и так далее.
Чтобы получить определенный элемент массива, необходимо знать его индекс (ключ). Напечатаем названия всех сериалов из массива через запятую:
Теперь можно дать определение массива: Массив — это совокупность множества элементов вида «ключ: значение».
Массивы позволяют перезаписывать существующие значения и добавлять новые. Добавить новое значение в массив можно так:
$fav_shows[] = "the big bang theory";
Новый элемент автоматически получит индекс равный максимальному индексу из существующих + 1. «Теория большого взрыва» сохранится в массиве под индексом 3 .
Если нам перестал нравиться один из сериалов, так как новый сезон оказался очень плох или появился новый фаворит, значения в массиве можно заменить. Чтобы вычеркнуть старое значение и заменить его новым, нужно присвоить новое значение любому из существующих в массиве индексов:
$fav_shows[4] = "fargo";
Для полного удаления (без замены на другое) значения по его индексу существует функция unset :
unset($fav_shows[4]);
Ассоциативные массивы
В предыдущем разделе мы познакомились с так называемыми простыми массивами. Но в PHP существует и чуть более сложный тип массивов — ассоциативные. Ассоциативные массивы отличаются от простых тем, что вместо индексов у них ключи. Если индекс всегда является целым, порядковым числом, то ключ может быть любой произвольной строкой.
Мы уже знаем многое о нашем пользователе: его имя, возраст, любимый цвет и сериалы. Есть только одно неудобство: все эти данные сейчас находятся в разных переменных. Было бы удобно хранить все эти данные в одном месте, и именно в таких ситуациях помогают ассоциативные массивы.
Запись всей информации о пользователе с помощью ассоциативного массива:
42, 'name' => 'Иннокентий', 'fav_shows' => ["game of thrones", "american horror story", "walking dead"] ];
Обратите внимание: массив может содержать другой массив в качестве одного из значений. В нашем примере мы поместили простой массив внутри ассоциативного под ключом fav_shows .
Вывод информации из ассоциативных массивов аналогичен простым массивам. Показ всей информации о пользователе из переменной $user :
В этом тренажёре вы потренируетесь использовать массивы в PHP на реальных задачах.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Изучаем массивы в PHP

Давайте разберемся, что же такое массив в PHP. Массив – это просто группа каких-то значений, представленных как единое целое. Представьте себе корзину с фруктами. В ней лежат банан, апельсин, яблоко и виноград. В PHP можно представить такую структуру в виде массива. Корзина – это сам массив, а конкретные фрукты – это его элементы.
Давайте теперь создадим в папке с нашим проектом файл для наших экспериментов с массивами. Назовём его arrays.php.
Объявляется массив в PHP с помощью квадратных скобок, вот так:
Вот так мы создали пустой массив.
- Привет, мир!
- Развернуть строку
- Чётные числа
- Числа Фибоначчи
В старом коде можно встретить пример такого определения массива:
$fruits = array();
Сейчас такая запись является устаревшей, использовать её не стоит!
Можно также создать массив, в котором уже будут какие-либо значения. Это делается так:
$fruits = ['apple', 'orange', 'grape'];
Вывести получившийся массив можно с помощью уже известной нам функции var_dump:
И давайте запустим этот наш скрипт, открыв в браузере: http://myproject.loc/arrays.php
Мы увидим следующее:
C:\OpenServer\domains\myproject.loc\www\arrays.php:4: array (size=3) 0 => string 'apple' (length=5) 1 => string 'orange' (length=6) 2 => string 'grape' (length=5)
Нумерованные массивы
Array – это тип объекта, а именно массив. Size=3 – это размерность массива (содержит 3 элемента). 0, 1, 2 – это ключи массива, которые также называются индексами. По этим ключам хранятся значения, в нашем случае эти значения – строки. Как мы можем видеть, ключи массива нумеруются с нуля, и далее просто увеличиваются на единицу.
Получить одно из значений массива мы можем именно по этим ключам. Для этого указывается имя массива, а затем в квадратных скобках указывается ключ, по которому мы хотим получить значение.
Например, чтобы получить нулевой элемент массива (с ключом 0), мы должны сделать следующее:
Результат этого кода:
apple
Давайте получим элемент с индексом 2:
grape
Если же мы попытаемся получить элемент с несуществующим индексом, например – 3:

То мы получим warning о том, что элемент с таким ключом не найден.
Добавление и удаление элементов массива
Давайте добавим ещё один элемент в массив, для этого используется следующая конструкция:
$fruits[] = 'mango';
Давайте после этого снова посмотрим на наш массив с помощью var_dump:
Результат – ещё один элемент с индексом 3:
C:\OpenServer\domains\myproject.loc\www\arrays.php:7: array (size=4) 0 => string 'apple' (length=5) 1 => string 'orange' (length=6) 2 => string 'grape' (length=5) 3 => string 'mango' (length=5)
Для удаления элементов массива используется конструкция unset. Давайте удалим элемент с индексом 2:
Результат этого кода:
C:\OpenServer\domains\myproject.loc\www\arrays.php:9: array (size=3) 0 => string 'apple' (length=5) 1 => string 'orange' (length=6) 3 => string 'mango' (length=5)
Как мы видим, элемента с индексом 2 больше нет, и образовалась «дырка» в порядковых номерах ключей. Если теперь добавить новый элемент, то у него индекс будет равен 4, но эта дыра по-прежнему останется. Это работает именно так и об этом нужно помнить.
И снова вернёмся к ключам
Вообще говоря, эти ключи можно задать самому, ещё при создании массива. Вот так:
'apple', 3 => 'orange', 9 => 'grape']; var_dump($fruits);
C:\OpenServer\domains\myproject.loc\www\arrays.php:5: array (size=3) 5 => string 'apple' (length=5) 3 => string 'orange' (length=6) 9 => string 'grape' (length=5)
Как мы видим, ключи теперь – это 5, 3 и 9.
Если теперь добавить элемент в массив, то у него будет индекс, на единицу больше максимального числового значения ключа:
'apple', 3 => 'orange', 9 => 'grape']; $fruits[] = 'mango'; var_dump($fruits);
C:\OpenServer\domains\myproject.loc\www\arrays.php:7: array (size=4) 5 => string 'apple' (length=5) 3 => string 'orange' (length=6) 9 => string 'grape' (length=5) 10 => string 'mango' (length=5)
Добавлять значения в массив можно также и по заданному ключу, например, мы хотим добавить манго в массив и сделать так, чтобы его значение хранилось по индексу 20. Проще простого:
'apple', 3 => 'orange', 9 => 'grape']; $fruits[20] = 'mango'; var_dump($fruits);
C:\OpenServer\domains\myproject.loc\www\arrays.php:7: array (size=4) 5 => string 'apple' (length=5) 3 => string 'orange' (length=6) 9 => string 'grape' (length=5) 20 => string 'mango' (length=5)
Если значение по такому ключу уже есть в массиве, оно просто заменится новым. Например, давайте заменим яблоко на манго:
'apple', 3 => 'orange', 9 => 'grape']; var_dump($fruits); $fruits[5] = 'mango'; var_dump($fruits);
C:\OpenServer\domains\myproject.loc\www\arrays.php:5: array (size=3) 5 => string 'apple' (length=5) 3 => string 'orange' (length=6) 9 => string 'grape' (length=5) C:\OpenServer\domains\myproject.loc\www\arrays.php:9: array (size=3) 5 => string 'mango' (length=5) 3 => string 'orange' (length=6) 9 => string 'grape' (length=5)
Ассоциативные массивы
Помимо числовых ключей можно использовать обычные строки. Такие массивы называются ассоциативными. Давайте представим такую ситуацию: есть какая-то статья, у неё есть название, текст и автор. Её можно легко представить в виде массива. Сделаем это:
'Название статьи', 'text' => 'Текст статьи']; $article['author'] = 'Имя автора'; var_dump($article);
Результат работы этого кода:
C:\OpenServer\domains\myproject.loc\www\arrays.php:6: array (size=3) 'title' => string 'Название статьи' (length=29) 'text' => string 'Текст статьи' (length=23) 'author' => string 'Имя автора' (length=19)
Отлично, а теперь мы можем использовать это внутри HTML-разметки:
‘Название статьи’, ‘text’ => ‘Текст статьи’, ‘author’ => ‘Автор статьи’ ]; ?>

Результат:
Многомерные массивы
Помните, в начале урока я сказал, что по ключам массива хранятся какие-то значения, и в нашем случае это строки. Так вот, элементом массива, вообще говоря, может являться что угодно. Даже сам массив. =)
Давайте на примере нашей статьи – у автора может быть имя и фамилия. И мы хотим хранить их отдельно друг от друга. Тогда автор – это массив с двумя ключами – first_name и last_name.
Давайте сделаем это:
'Название статьи', 'text' => 'Текст статьи', 'author' => [ 'first_name' => 'Иван', 'last_name' => 'Иванов' ] ]; var_dump($article);
C:\OpenServer\domains\myproject.loc\www\arrays.php:10: array (size=3) 'title' => string 'Название статьи' (length=29) 'text' => string 'Текст статьи' (length=23) 'author' => array (size=2) 'first_name' => string 'Иван' (length=8) 'last_name' => string 'Иванов' (length=12)
Вот так всё просто, article – это массив, у которого по ключу author – тоже находится массив.
Чтобы получить имя автора нужно использовать следующий код:
'Название статьи', 'text' => 'Текст статьи', 'author' => [ 'first_name' => 'Иван', 'last_name' => 'Иванов' ] ]; echo $article['author']['first_name'];
Сначала в массиве $article получили значение по ключу author, этим значением оказался массив. А затем уже из этого массива получили значение по ключу first_name. И результат этого кода, разумеется:
Иван
Давайте теперь используем эти значения в уже использованном нами шаблоне:
‘Название статьи’, ‘text’ => ‘Текст статьи’, ‘author’ => [ ‘first_name’ => ‘Иван’, ‘last_name’ => ‘Иванов’ ] ]; ?>

Результат:
Разумеется, можно и внутри этого значения создать массив, а внутри него – ещё один, пока не надоест.
В следующем уроке мы рассмотрим более сложные и интересные примеры работы с массивами.
Php ключ что это
key — Выбирает ключ из массива
Описание
key ( array | object $array ): int | string | null
key() возвращает индекс текущего элемента массива.
Список параметров
Возвращаемые значения
Функция key() просто возвращает ключ того элемента массива, на который в данный момент указывает внутренний указатель массива. Она не сдвигает указатель ни в каком направлении. Если внутренний указатель указывает вне границ массива или массив пуст, key() возвратит null .
Список изменений
| Версия | Описание |
|---|---|
| 8.1.0 | Вызов функции в объекте ( object ) объявлен устаревшим. Либо сначала преобразуйте объект ( object ) в массив ( array ) с помощью функции get_mangled_object_vars() , либо используйте методы, предоставляемые классом, реализующим интерфейс Iterator , например, ArrayIterator . |
| 7.4.0 | Экземпляры классов SPL теперь обрабатываются как пустые объекты, не имеющие свойств, вместо вызова метода Iterator с тем же именем, что и эта функция. |
Примеры
Пример #1 Пример использования key()
$array = array(
‘fruit1’ => ‘apple’ ,
‘fruit2’ => ‘orange’ ,
‘fruit3’ => ‘grape’ ,
‘fruit4’ => ‘apple’ ,
‘fruit5’ => ‘apple’ );
?php
// этот цикл выведет все ключи ассоциативного массива,
// значения которых равны «apple»
while ( $fruit_name = current ( $array )) if ( $fruit_name == ‘apple’ ) echo key ( $array ), «\n» ;
>
next ( $array );
>
?>
Результат выполнения данного примера:
fruit1 fruit4 fruit5
Смотрите также
- current() — Возвращает текущий элемент массива
- next() — Перемещает указатель массива вперёд на один элемент
- array_key_first() — Получает первый ключ массива
- foreach
User Contributed Notes 5 notes
9 years ago
Note that using key($array) in a foreach loop may have unexpected results.
When requiring the key inside a foreach loop, you should use:
foreach($array as $key => $value)
I was incorrectly using:
foreach( $array as $value )
$mykey = key ( $array );
>
?>
and experiencing errors (the pointer of the array is already moved to the next item, so instead of getting the key for $value, you will get the key to the next value in the array)
CORRECT:
foreach( $array as $key => $value )
$mykey = $key ;
>
A noob error , but felt it might help someone else out there .
10 years ago
Suppose if the array values are in numbers and numbers contains `0` then the loop will be terminated. To overcome this you can user like this
while ( $fruit_name = current ( $array ))
echo key ( $array ). ‘
‘ ;
next ( $array );
>
// the way will be break loop when arra(‘2’=>0) because its value is ‘0’, while(0) will terminate the loop
// correct approach
while ( ( $fruit_name = current ( $array )) !== FALSE )
echo key ( $array ). ‘
‘ ;
next ( $array );
>
//this will work properly
?>
12 years ago
Needed to get the index of the max/highest value in an assoc array.
max() only returned the value, no index, so I did this instead.
reset ( $x ); // optional.
arsort ( $x );
$key_of_max = key ( $x ); // returns the index.
?>
3 years ago
(Editor note: Or just use the array_keys function)
Make as simple as possible but not simpler like this one 🙂
4 years ago
In addition to FatBat’s response, if you’d like to find out the highest key in an array (assoc or not) but don’t want to arsort() it, take a look at this:
$arr = [ ‘3’ => 14 , ‘1’ => 15 , ‘4’ => 92 , ’15’ => 65 ];
$key_of_max = array_search ( max ( $arr ) , $arr );
- Функции для работы с массивами
- array_change_key_case
- array_chunk
- array_column
- array_combine
- array_count_values
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_diff
- array_fill_keys
- array_fill
- array_filter
- array_flip
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_intersect
- array_is_list
- array_key_exists
- array_key_first
- array_key_last
- array_keys
- array_map
- array_merge_recursive
- array_merge
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_replace_recursive
- array_replace
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff_assoc
- array_udiff_uassoc
- array_udiff
- array_uintersect_assoc
- array_uintersect_uassoc
- array_uintersect
- array_unique
- array_unshift
- array_values
- array_walk_recursive
- array_walk
- array
- arsort
- asort
- compact
- count
- current
- end
- extract
- in_array
- key_exists
- key
- krsort
- ksort
- list
- natcasesort
- natsort
- next
- pos
- prev
- range
- reset
- rsort
- shuffle
- sizeof
- sort
- uasort
- uksort
- usort
- each
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Php ключ что это
Ассоциативные массивы представляют подвид массивов, в которых, в отличие от обычных массивов, в качестве ключа применяются строки.
При создании ассоциативного массива мы явным образом указываем ключ элемента, после которого идет оператор => и значение элемента. Например, создание ассоциативного массива с помощью функции array() :
$words = array("red" => "красный", "blue" => "синий", "green" => "зеленый");Здесь создается массив $words из трех элементов. Например, первый элемент имеет ключ «red», а значение — «красный».
Создание аналогичного массива с помощью квадратных скобок:
$words = ["red" => "красный", "blue" => "синий", "green" => "зеленый"];
Используя ключ, также как и в обычных массивах, можно обратиться к элементу массива, например, получить или изменить его значение:
"Berlin", "France" => "Paris", "Spain" => "Madrid"]; echo $countries["Spain"]; // Madrid echo "
"; $countries["Spain"] = "Barcelona"; echo $countries["Spain"]; // Barcelona ?>Результат работы скрипта:
Madrid Barcelona
Для добавления элемента с новым ключом в ассоциативный массив достаточно определить элемент с этим ключом:
$countries = ["Germany" => "Berlin", "France" => "Paris", "Spain" => "Madrid"]; $countries["Italy"] = "Rome"; // определяем новый элемент с ключом "Italy" echo $countries["Italy"]; // Rome
Также необязательно инициализировать переменную массива при ее определении. Можно, как с обычными массивами, добавлять элементы по ходу:
Для перебора ассоциативного массива применяется цикл foreach :
"красный", "blue" => "синий", "green" => "зеленый"]; foreach($words as $english => $russian) < echo "$english : $russian
"; > ?>Результат перебора массива:
red : красный blue : синий green : зеленый
Смешанные массивы
PHP позволяет использовать в одном массиве числовые и строковые индексы:
$data = [1=> "Tom", "id132" => "Sam", 56 => "Bob"]; echo $data[1]; // Tom echo "
"; echo $data["id132"]; // Sam