- Как вывести массив в PHP: 6 способов с примерами
- Для чего используется вывод массива
- 1 способ: функции print_r() и var_dump(). Сравнение
- var_dump()
- print_r()
- 2 способ: функция var_export()
- 3 способ: цикл foreach
- 4 способ: цикл for
- 5 способ: цикл while
- 6 способ: функция implode()
- Использование циклов в PHP
- Foreach – перебор массива
- Результат:
- Альтернативный синтаксис foreach
- For – цикл с счетчиком
- Результат:
- Альтернативный синтаксис
- Результат:
- Альтернативный синтаксис for
- While – цикл с предусловием
- Результат:
- Альтернативный синтаксис while
- Do-while – цикл с постусловием
- Результат:
- Управление циклами
- Break
- Continue
- Результат:
Как вывести массив в PHP: 6 способов с примерами
Массив в PHP (от англ. Array) — это глобальный объект для хранения набора данных упорядоченным образом, который регламентирует соответствие между ключом и значением. Такой упорядоченный список элементов всегда имеет собственный ключ — он называется индексом, а каждое значение в такой коллекции данных называется элементом. Тип array, обычно, формируется соответствующей конструкцией (array). В качестве параметров она принимает любое количество пар “ключ” / “значение”. Синтаксис такой:
array( key0 => value, key1 => value2, key2 => value3, . )
(Запятая сразу после последнего элемента может не использоваться)
Простыми словами, массив в PHP — это набор определённых данных, объединенный под каким-либо названием (иначе говоря, в пределах одной переменной доступно несколько элементов).
Для чего используется вывод массива
Вывод — одна из самых частых операций, которая используется при работе с массивом. Вывод нужен, чтобы показать информацию о переменной в доступном, читабельном варианте. Без вывода получить представление массива в окне браузера просто невозможно.
PHP предоставляет несколько способов, которые можно использовать для вывода объекта типа array. Некоторые из них вполне универсальные, например, функция print_r(), другие — более узкоспециализированные. Давайте разберём каждый из таких способов и посмотрим, что лучше всего работает для вывода массива.
1 способ: функции print_r() и var_dump(). Сравнение
var_dump() и print_r() — обе функции можно успешно использовать для отображения содержимого переменной. Однако, у них есть несколько ключевых различий. О них и пойдёт речь ниже.
var_dump()
Функция var_dump() используется для отображения типа данных и значения переменной. Она также показывает количество элементов в объекте типа array и выводит его свойства.
var_dump() предоставляет более подробную информацию о переменной (по сравнению с print_r).
Пример использование функции для вывода:
$array = array( 'Moscow', 'Brest', 'Tel Aviv', 'Anaheim', 'Haapsalu', ); echo ''; var_dump($array); echo '';
array(5) < [0]=>string(4) "Moscow" [1]=> string(5) "Brest" [2]=> string(4) "Tel Aviv" [3]=> string(5) "Anaheim" [4]=> string(5) "Haapsalu" >
print_r()
Функция используется для отображения содержимого переменной в человекочитаемом формате. Обычно она используется в целях отладки — для просмотра содержимого массива или иного объекта.
print_r() предоставляет менее подробную информацию о переменной (по сравнению с var_dump).
$array = array( 'Moscow', 'Brest', 'Tel Aviv', 'Anaheim', 'Haapsalu', ); echo ''; print_r($array); echo '';
Array ( [0] => Moscow [1] => Brest [2] => Tel Aviv [3] => Anaheim [4] => Haapsalu )
Давайте сравним обе функции:
- var_dump() — возвращает тип данных и значение переменной, а print_r() — только содержимое переменной.
- var_dump() может отображать все свойства и значения объекта (включая приватные, защищенные свойства и методы). А вот print_r() выводит только публичные свойства и значение var_dump.
- var_dump() более полезна для отладки, а print_r() — для отображения информации.
В целом, var_dump() более «мощная» и предоставляет больший объём информации о переменной. Функция print_r() же — более простая и предоставляет менее подробные данные, но зато в более читабельном формате.
var_dump() разумнее использовать в случаях, когда нужно изучить структуру переменной и ее тип данных, а print_r() — когда нужно отобразить содержимое переменной в удобочитаемом формате.
2 способ: функция var_export()
Функция позволяет вернуть строковое представление переменной.
- Если параметр$return не установлен в true — происходит возврат null и в этом случае переменная отображается на экране.
- Если параметр $ return установлен в true — функция вернет структурированное представление переменной и не будет отображаться на экране.
$array = array( 'Moscow', 'Brest', 'Tel Aviv', 'Anaheim', 'Haapsalu', ); echo ''; echo var_export($array); echo '';
array ( 0 => 'Moscow', 1 => 'Brest', 2 => 'Tel Aviv', 3 => 'Anaheim', 4 => 'Haapsalu', )
Таким образом, var_export() имеет сходство с var_dump() в том, что обе они получают структурированную информацию о переменных. Но если var_export() может вернуть эту информацию в читаемой парсером PHP форме, var_dump() — не может. Говоря более простым языком, возвращаемое значение функции var_export() может быть использовано в дальнейших вычислениях, в отличие от var_dump.
Быстро взглянем на синтаксис функции:
var_export($переменная, $return = false)
Не знаете с чего начать обучение? Прежде чем браться за изучение полноценного языка программирования PHP, разумно будет пройти курс «Веб-разработчик». Если PHP кажется слишком сложным — запишитесь на курс «Основы вёрстки». В указанных курсах вы получите базис для дальнейшего освоения не только PHP но и других языков программирования.
3 способ: цикл foreach
Этот способ идеален, когда требуется поэлементный перебор внутри объекта типа array. Например, вот так:
$array = array( 'Moscow', 'Brest', 'Tel Aviv', 'Anaheim', 'Haapsalu', ); foreach ($array as $row)
Moscow
Brest
Tel Aviv
Anaheim
Haapsalu
Цикл foreach очень важен в разрезе работы с массивом, поэтому нужно сказать о нем подробнее.
Foreach — это тип цикла. Он обеспечивает простой способ итерации по массиву. Проще всего показать, как это всё работает, на примере кода. Начнем с синтаксиса:
$arr = array('value1', 'value2', 'value3');
Мы можем получить доступ к отдельному элементу этого массива с помощью $arr[index], где index — ключ. Обратите внимание: наш объект-массив автоматически пронумерован, поэтому ключами являются целые числа, начиная с 0. Вот так:
$arr[0] == 'value1'. Foreach дает нам простой способ итерации: foreach($arr as $value) < echo $value . PHP_EOL; // PHP_EOL — константа конца строки, которая может быть \n или
>
Это еще не все. Иногда значения недостаточно и нужно знать его ключ. Причем не всегда этот ключ является целым числом. Это может быть и строка, например. Так что давайте воспользуемся другим объектом типа array:
$arr = array ( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
key1 = value1 key2 = value2 key3 = value3
На этом примере видно, что можно получить не только значение, но и ключ каждого элемента массива. Это может быть особенно полезно при модификации объекта типа array в блоке foreach, например.
Немного об объектах
- С помощью foreach можно перебирать не только простые массивы, но и свойства объектов.
- Foreach будет перебирать все видимые свойства объекта, используя тот же синтаксис, что и выше ($key — имя свойства, а $value — значение свойства).
Видимость — ключевой момент, который нужно учитывать. Видимость свойств может зависеть от того, где именно находится foreach, но это большая тема для другой статьи.
Внутренний указатель
До PHP 7-й версии в foreach использовался внутренний указатель — это скрытая переменная, которая указывает на текущий элемент. В PHP 7 и последующих версиях языка произошли значительные изменения, но foreach по-прежнему функционирует как раньше.
4 способ: цикл for
Этот способ вывода можно смело рекомендовать в случаях, когда последовательность индексов является непрерывной. Цикл используется для выполнения кода определённое количество раз.
$array = array( 'Moscow', 'Brest', 'Tel Aviv', 'Anaheim', 'Haapsalu', ); for ($n = 0; $n
1.Moscow
2.Brest
3.Tel Aviv
4.Anaheim
5.Haapsalu
Теперь детальнее посмотрим, как устроен цикл for. Взгляните на эту конструкцию:
for(INITIALISATION; TERMINATION; ITERATION)
Каждый из трех вышеперечисленных элементов является необязательным и может быть любым допустимым утверждением (или утверждениями, разделенными запятой).
for($i = 0; $i < 10; $i++) < echo "squared language-php">$count = 20; for(;$count > 0; $count--)
И можно даже поместить более одного оператора в секции инициализации, завершения и инкремента цикла.
for($i = 0, $count=10, setStart();$count > $i; $i++, $count--) < >function setStart() < // тут что-нибудь полезное в начале цикла >
5 способ: цикл while
Этот способ вывода похож на предыдущий, но у него иной синтаксис. While один раз проходит через блок кода, а затем — повторяет цикл до тех пор, пока заданное условие не будет истинно.
Цикл while можно использовать точно так же, как мы используем цикл for.
$array = array( 'Moscow', 'Brest', 'Tel Aviv', 'Anaheim', 'Haapsalu', ); $index = 0; while ($index
1.Moscow
2.Brest
3.Tel Aviv
4.Anaheim
5.Haapsalu
Мы разобрали несколько видов циклов. Чтобы не запутаться — ещё раз подытожим разницу между ними:
- Цикл for используетя для выполнения кода определенное количество раз.
- Цикл foreach — для итерации объекта типа array и доступа к каждому его элементу по очереди.
- Цикл while используется для выполнения кода до тех пор, пока заданное условие не станет истинно.
- Цикл do. while похож на цикл while, за исключением того, что код в цикле всегда выполняется хотя бы один раз до проверки условия.
Каждый из перечисленных циклов имеет свой собственный синтаксис и особенности использования, но все они имеют одинаковую базовую структуру: условный оператор, определяющий, когда цикл должен продолжаться, и блок кода, который выполняется каждый раз, когда цикл стартует.
6 способ: функция implode()
Функция implode в PHP используется для объединения элементов массива в строку. Другими словами, её можно использовать, если нужно объединить элементы объекта array в строку и при этом задействовать separator (разделитель)
$array = array( 'Moscow', 'Brest', 'Tel Aviv', 'Anaheim', 'Haapsalu', ); echo implode("\r\n", $array);
Moscow
Brest
Tel Aviv
Anaheim
Haapsalu
Таким образом, функция implode() возвращает строку из элементов массива. Она берет массив строк и объединяет их в одну строку с помощью разделителя (строки, которая будет использоваться между любыми частями).
Функцию implode в PHP легко запомнить как «преобразование массива в строку». Простыми словами, она принимает объект типа array и возвращает строку. Функция соединяет все элементы массива и возвращает полученную строку, которую можно поместить в переменную.
Предположим, у вас есть объект типа array следующего вида
…и нам нужно объединить его в строку, поставив разделитель ‘-‘ между каждым элементом. Вот простое и элегантное решение, как как это сделать:
Таким образом, строковая переменная $str будет содержать:
Синтаксис функции implode():
Использование циклов в PHP
PHP имеет четыре вида циклов и операторы управления ими, рассмотрим поподробнее.
Foreach – перебор массива
Предназначен для перебора элементов массива.
$array = array( 1 => 'Значение 1', 2 => 'Значение 2', 3 => 'Значение 3', 4 => 'Значение 4', ); // Вывод ключей foreach ($array as $key => $val) < echo $key . '
'; > // Вывод значений foreach ($array as $key => $val) < echo $val . '
'; >
Результат:
1 2 3 4 Значение 1 Значение 2 Значение 3 Значение 4
Альтернативный синтаксис foreach
For – цикл с счетчиком
Цикл работает пока выполняется заданное условие. Обычно применяется в качестве счетчика.
// Счетчик от 0 до 5 for ($n = 0; $n // Счетчик от 5 до 0 for ($n = 5; $n >= 0; $n--)
Результат:
Альтернативный синтаксис
$array = array( 'Значение 1', 'Значение 2', 'Значение 3', 'Значение 4', ); for ($n = 0; $n < count($array); $n++) < echo $array[$n] . '
'; >
Результат:
Значение 1 Значение 2 Значение 3 Значение 4
Альтернативный синтаксис for
While – цикл с предусловием
Т.е. если перед началом итерации условие выполняется, то цикл продолжает свою работу.
Результат:
Альтернативный синтаксис while
Do-while – цикл с постусловием
В отличии от while этот цикл проверяет выполнения условия после каждой итерации. Do-while не имеет альтернативного синтаксиса.
Результат:
Управление циклами
Break
Вызов break или break 1 в цикле останавливает его.
Для вложенных циклов используется break 2 и т.д.
Continue
Используется для пропуска итерации.
Результат:
Для вложенных циклов по аналогии с break 2 , break 3 – continue 2 , continue 3 .