Как вывести массив в PHP: 6 способов с примерами
Оглавление:
Что этоДля чего используется вывод массива
Функции print_r() и var_dump(). Сравнение
Функция var_export()
Цикл foreach
Цикл for
Цикл while
Функция implode()
Что такое массив в PHP простыми словами
Массив в 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) {
echo $row . "\r\n";
}
Вывод:
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 или
}
Вывод:
value1
value2
value3
Это еще не все. Иногда значения недостаточно и нужно знать его ключ. Причем не всегда этот ключ является целым числом. Это может быть и строка, например. Так что давайте воспользуемся другим объектом типа array:
$arr = array
(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
Выполняем итерацию::
foreach($arr as $key => $value)
{
echo $key . ' = ' . $value . PHP_EOL;
}
Вывод:
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 < count($array); $n++) {
echo $n + 1 . '.' . $array[$n] . "\r\n";
}
Вывод:
1.Moscow
2.Brest
3.Tel Aviv
4.Anaheim
5.Haapsalu
Подробнее
Теперь детальнее посмотрим, как устроен цикл for. Взгляните на эту конструкцию:
for(INITIALISATION; TERMINATION; ITERATION) {
}
Каждый из трех вышеперечисленных элементов является необязательным и может быть любым допустимым утверждением (или утверждениями, разделенными запятой).
Пример (простой)
for($i = 0; $i< 10; $i++) {
echo "{$i} squared = " . ($i*$i);
}
Допустим, мы проверяем конечное условие для переменной, которая уже определена. В таком случае вы можно не указывать итерацию вообще:
$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 < count($array)) {
echo $index + 1 . '.' . $array[$index] . "\r\n";
$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 следующего вида
$arr = Array ("A", "E", "I", "O", "U");
…и нам нужно объединить его в строку, поставив разделитель '-' между каждым элементом. Вот простое и элегантное решение, как как это сделать:
$str = implode("-",$arr);
Таким образом, строковая переменная $str будет содержать:
A-E-I-O-U
Синтаксис функции implode():
implode (separator, array)
Пример 1
Implode-функции
Вывод:
i like it
Изучение всех способов вывода поможет вам как программисту PHP в долгосрочной перспективе. Ну а чтобы пользы было ещё больше — успейте записаться на курс бэкенд-разработчик от Loft.