Как вывести содержимое массива без использования циклов в JavaScript
Песочница
рыцарь со стволом 18 августа 2016 в 11:54Простой дебаг содержания PHP-массивов или объектов
При проведении небольших правок на PHP нам часто приходится просматривать содержимое массивов с помощью print_r() либо var_dump , при этом на выходе в браузере мы получаем далеко не самый читабельный текст даже с помощью банального тега pre .
Представляю Вам современное и простое решение, выводящее массивы в виде удобочитаемого древа элементов.
Конечно, с помощью print_r() можно понять, что находится в небольшом массиве/объекте, но когда речь идёт о настоящих многомерных массивах, мы уже не можем спокойно понять, к какой части массива относится то или иное значение. Мне это надоело и я написал простенькую пару функций, выводящих массивы в виде дерева с помощью html-тега details , скрывающего внутреннее содержимое. Таким образом можно отладить массив прямо в браузере, не вставляя лишние скрипты и стили в исходную страницу. Само древо выглядит следующим образом:
Самый верхний элемент указывает тип переменной (объект или массив) и кол-во суб-элементов. Конечное значение подсвечивается зелёным цветом если это число, и красным если это строка. Весь вывод помещён в один div для удобства. Также для удобства (чтобы не нагромождать код этими функциями) был организован сервис, выводящий переменную в виде вышеуказанного древа элементов. Для этого вам достаточно лишь использовать следующий код:
Echo file_get_contents("https://www.w3strict.ru/ppp.php?print=".urlencode(serialize($VASH_MASSIV)));
Также можно передать параметр opened , равный true , чтобы изначально получить закрытое древо элементов. Подробности и исходный код приведены .
Удачного Вам кодинга, друзья!
Теги: php debug
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Последнее обновление: 1.11.2015
Массивы предназначены для хранения наборов данных или элементов. Каждый элемент в массиве имеет свой уникальный ключ и значение. Итак, сохраним в массив список моделей телефонов:
Galaxy ACE II";
$phones = "Sony Xperia Z3";
$phones = "Samsung Galaxy III";
for($i=0;$i
Здесь создается массив $phones из четыре элементов. Каждый элемент в массиве представляет собой пару ключ - значение . Так, первый элемент $phones = "Nokia N9" имеет ключ - число 0, а значение - строку "Nokia N9". В таких массивах числовые ключи еще называются индексами.
С помощью функции count() можно узнать количество элементов в массиве. А благодаря тому, что ключи идут по порядку от 0 до 3, и зная размер массива, можно вывести элементы массивы в цикле for .
Чтобы было более понятно отношения ключей и значений элементов, выведем массив с помощью функции print_r :
Print_r($phones);
У нас получится следующий вывод:
Array ( => Nokia N9 => Samsung Galaxy ACE II => Sony Xperia Z3 => Samsung Galaxy III)
Данное создание массива будет также эквивалентно следующему:
"; ?>
Если не указывается ключ элемента, то PHP в качестве ключей использует числа. При этом нумерация ключей начинается с нуля, а каждый новый ключ увеличивается на единицу.
Зная ключ элемента в массиве, мы можем обратиться к этому элементу, получить или изменить его значение:
// получим элемент по ключу 1
$myPhone = $phones;
echo "$myPhone
";
// присвоение нового значения
$phones = "Samsung X650";
echo "$phones
";
Но в качестве ключей могут использоваться не только целые числа, но и строки:
Подобные массивы еще называют ассоциативными.
Оператор array
Выше был рассмотрен один способ создания массива. Но есть и другой, который предусматривает применение оператора array() .
Оператор array() принимает набор элементов. Здесь также явным образом не указаны ключи. Поэтому PHP автоматически нумерует элементы с нуля. Но мы также можем указать для каждого элемента ключ:
"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); echo $phones["samsumg"]; ?>
Операция => позволяет сопоставить ключ с определенным значением.
Перебор ассоциативных массивов
Выше мы посмотрели, как с помощью цикла for вывести все элементы массива, где ключи заданы последовательно числами от 0 до 3. Однако с ассоциативными массивами это не работает. И для них в PHP предназначен специальный тип цикла - foreach...as :
"iPhone5",
"samsumg"=>"Samsung Galaxy III",
"nokia" => "Nokia N9",
"sony" => "Sony XPeria Z3");
foreach($phones as $item)
echo "$item
";
?>
В цикле foreach из массива последовательно извлекаются все элементы и их значение помещается в переменную, указанную после ключевого слова as . В данном случае в переменную $item по очереди помещаются все четыре значения из массива $phones. Когда будет извлечен последний элемент из массива, цикл завершается.
Цикл foreach позволяет извлекать не только значения, но и ключи элементов:
"iPhone5",
"samsumg"=>"Samsung Galaxy III",
"nokia" => "Nokia N9",
"sony" => "Sony XPeria Z3");
foreach($phones as $key=>$value)
echo "$key => $value
";
?>
Здесь при переборе элементов цикла в переменную $key будет передаваться ключ элемента, а в переменную $value ее значение.
Альтернативу циклу foreach представляет использование функций list и each :
"iPhone5",
"samsumg"=>"Samsung Galaxy III",
"nokia" => "Nokia N9",
"sony" => "Sony XPeria Z3");
while (list($key, $value) = each($phones))
echo "$key => $value
";
?>
Цикл while будет работать, пока функция each не вернет значение false . Функция each проходит по всем элементам массива $phones и получает его в виде массива, в который входят ключ и значение элемента. Затем этот массив передается функции list и проиcходит присваивает значения массива переменным внутри скобок. Когда функция each закончит перебор элементов массива $phones, она возвратит false , и действие цикла while будет завершено.
Многомерные массивы
В предыдущих примерах рассматривались только одномерные массивы, где значения элементов представляли числа, строки. Но в PHP массивы могут также быть многомерными, то есть такими, где элемент массива сам является массивом. Например, создадим многомерный массив:
array("iPhone5", "iPhone5s", "iPhone6") , "samsumg"=>array("Samsung Galaxy III", "Samsung Galaxy ACE II"), "nokia" => array("Nokia N9", "Nokia Lumia 930"), "sony" => array("Sony XPeria Z3", "Xperia Z3 Dual", "Xperia T2 Ultra")); foreach ($phones as $brand => $items) { echo "
$brand
"; echo "- ";
foreach ($items as $key => $value)
{
echo "
- $value "; } echo "
И при выводе мы получим 4 списка:
Чтобы обратиться к элементу данного, также надо указать ключи в квадратных скобках. Например, обратимся к первому элементу в первом массиве. Так как ключ первого массива - "apple", а ключ первого элемента в первом массиве - число 0 (так как мы явным образом не указали ключи):
Echo $phones["apple"];
Подобным образом можно получить второй элемент третьего массива:
Echo $phones["nokia"];
Допустим, вложенные массивы также представляют ассоциативные массивы:
array("apple" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"), "tablets" => array("lenovo" => "Lenovo IdeaTab A3500", "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air")); foreach ($technics as $tovar => $items) { echo "
$tovar
"; echo "- ";
foreach ($items as $key => $value)
{
echo "
- $key: $value "; } echo "
(массив в массиве, матрица)
Что такое массив PHP?
Начать данную тему хотелось бы с отречённых примеров. Допустим, мы рассматриваем какого-либо человека . У него есть имя, фамилия, адрес, телефон, пол, рост, цвет глаз и так далее. Информацию по всем этим пунктам можно отнести к массиву данных о человеке.Массив может быть другого типа, без какой-либо конкретики по пунктам. Будет только тема. Допустим, это web-прграммирование . А в качестве элементов будут языки - HTML , CSS , JavaScript , PHP , MySQL . Всего 5 элементов.
Исходя из последнего примера предположим массив:
web-программирование
1. HTML
2. CSS
3. JavaScript
4. PHP
5. MySQL
Теперь смотрим на данный пример и анализируем основные понятия.
Массив в PHP - это набор последовательно расположенных однотипных данных, связанных общей тематикой, число элементов которого фиксировано.
Массив в данном примере будет называться web-программирование .
У каждого элемента есть своё порядковое место, идентификатор.
Индекс
(ключ массива) - либо порядковый номер, либо текстовое значение, по которому можно идентифицировать элемент.
Индексами в примере выше будут числовые значение от 1 до 5 . При обращении к индексу 2 мы увидим CSS.
Пример массива в PHP
Теперь давайте рассмотрим вышеуказанный пример в синтаксисе PHP, а не русского языка. Допустим массив будет называться короче - web . В квадратных скобках будет вставлять индекс.Давайте рассмотрим простой пример массива, где в значении индексов будут числовые значения, а создавать массив будем так, словно переменным присваиваем значения.
$web="HTML";
$web="CSS";
$web="JavaScript";
$web="PHP";
$web="MySQL";
$web; // данная переменная содержит массив с 5-ю элементами
// чтобы вывести один из элементов массива достаточно указать индекс в массиве
echo $web; // выведет PHP
Одномерный массив
ИНДЕКСНЫЙ МАССИВВыше, с web-программированием, мы рассмотрели как раз пример одномерного массива.
Таким способом он создаётся редко. Он скорее наглядно показывает структуру массива. Чаще прибегают к другому методу.
$web=array("HTML","CSS","JavaScript","PHP","MySQL");
echo $web; // выведет "HTML"
echo $web; // выведет "JavaScript"
echo $web; // выведет "PHP"
Если Вы хотите задать значения индекса, то их надо указать следующим образом. Знак =>
является указателем для присваивания индекса значению или наоборот значению индекс.
$web=array(1=>"HTML",2=>"CSS",3=>"JavaScript",4=>"PHP",5=>"MySQL");
echo $web; // HTML
echo $web; // CSS
echo $web; // PHP
В примере отсчёт начинается с 1. Переменная с индексом 0 вследствие этого пустая.
В следующем примере мы не будем указывать индекс.
$day="Понедельник"; // индекс 0
$day="Вторник"; // 1
$day="Среда"; // 2
$day="Четверг"; // 3
$day="Пятница"; // 4
Можно проследить, что происходит последовательное заполнение с нуля.
АССОЦИАТИВНЫЙ МАССИВ
Зачастую возникает потребность в создании буквенного индекса для элемента массива. Как я упоминал выше, такой индекс должен состоять из латинских букв, а имя должно быть заключено в кавычки. Рассмотрим на примере человека.
$user["nick"]="Logic";
$user["name"]="Павел";
$user["age"]="25";
$user["sex"]="Мужской";
$user; // переменная $user содержит массив с 4-мя элементами с буквенными индексами
// выводим элемент массива, указывая его буквенный индекс
echo $web["name"]; // выведет "Павел"
Как видите, всё достаточно просто. Только значение индекса закавычиваем.
Двумерный массив
Если Вы пропустили первую часть с Одномерным массивом , то настоятельно советую прочитать.Если говорить проще, то это массив в массиве. То есть элементов большого массива является другой. Подобные массивы очень тормозят работу скрипта, загружая оперативную память, поэтому для быстрой обработки подобных групп данных созданы Базы Данных (Что такое База данных?), но о ней позже. Давайте разберём пример двумерного массива.
// массив с названиями Частей Света
$m = array("Европа","Азия","Африка","Америка","Австралия и Океания");
// массив с названиями Стран
$s = array("Россия","Украина","Беларусь","Казахстан");
// массив с названиями Столиц
$с = array("Москва","Киев","Минск","Астана");
// создаём двумерный массив География
$geography = array($m, $s, $с);
?>
Во включенных массивах, как Вы обратили внимание, может быть разное количество элементов. Из части про одномерные массивы следовало, что у каждого элемента массива может быть индекс. Так давайте для каждого включённого массива присвоим своё значение.
Для этого расширим последнюю строчку и напишем её следующим образом.
$geography = array("Части Света"=>$m, "Страны"=>$s, "Столицы"=>$с);
Функции работы с массивами php
Foreach - циклическая функция для работы с массивами, в которой количество циклов равно количеству элементов массива.Имеет следующий вид. Код PHP
Foreach (массив as $ключ=>$значение)
команды;
Ну и сразу пример работы
// создаём массив со знаменитыми IT
$names["Ритчи"] = "Деннис";
$names["Томпсон"] = "Кен";
$names["Гейтс"] = "Билл";
$names["Джобс"] = "Стив";
Foreach ($names as $key => $value) {
echo "$value $key";
}
?>
На экран скрипт выведет
Деннис Ритчи
Кен Томпсон
Билл Гейтс
Стив Джобс
Count
- функция, возвращающая количество элементов в массиве.
Echo count($names); // в нашем примере с IT вернёт значение 4
Sort
- функция, сортирующая элементы массива. Удобна в случае числовых значений индекса.
Arsort
- функция, сортирующая элементы массива в обратном порядке.
Sort($names); // сортирует по порядку. Удобно если в Индексе числа
arsort($names); // сортировать в обратном порядке. То есть по индексам элементы будут в порядке 3, 2, 1, 0
Unset
- функция, удаляющая элемент массива.
Unset($massiv); // удаление элемента массива с индексом 2
unset($massiv); // удаление массива целиком
Array_search
- функция поиска в массиве. Имеет два аргумента. Проще говоря, имеет вил array_search("что", где)
$animals="dog";
$animals="cat";
$animals="bird";
echo array_search("cat",$animals); // выведет индекс элемента - цифру 2
Shuffle
- функция, которая перемешивает ключи значений массива.
Shuffle($animals); // выстроит элементы в случайном порядке
Спасибо за внимание!
PHP массивы — это способ организации и использования данных. Проще говоря, массив представляет собой список. Вот краткий пример массива, элементами которого являются названия видов транспорта:
$transportation = array(‘Planes’, ‘Trains’, ‘Automobiles’);
Для удобства чтения вы можете написать это так:
$transportation = array(‘Planes’, ‘Trains’, ‘Automobiles’);
Теперь переменная $transportation содержит список видов транспорта.
Вывод элементов массива
Каждый из элементов в приведенном выше списке называется значением. Каждое значение также имеет ключ. Если вы сами не задаете для элемента ключ, он присвоится автоматически, и это будет порядковый номер. Ниже приводится пример работы с массивами PHP :
$transportation = array(0 => ‘Planes’, 1 => ‘Trains’, 2 => ‘Automobiles’);
=> — это оператор присваивания, а числа являются ключами. Обратите внимание, что мы начали с 0 . Если вы устанавливаете ключи сами, то можно начать с 1 . Но я не рекомендую делать этого, так как автоматическая нумерация начинается с 0 .
Выводим первый элемент массива:
Видите ключ в квадратных скобках? Этот код выведет значение «Planes «.
Пользовательские ключи массива
Вы также можете создать собственные ключи. Вот пример ассоциативного массива PHP :
$web_site = array(‘Name’ => ‘OSTraining’, ‘URL’ => ‘http://ostraining.com’, ‘Purpose’ => ‘Education’);
А теперь можно сделать что-то вроде этого:
- Name:
- URL:
- Purpose:
И в результате вы получите следующее:
- Name: OSTraining ;
- URL: http://ostraining.com ;
- Purpose: Education .
Использование пользовательских ключей помогает проще определять, что вы выводите. Для этого достаточно посмотреть на ключ выведенного массива PHP .
Циклы
Что делать, если вы не знаете, сколько элементов содержится в массиве, или какие в нем ключи? В PHP для этого используется цикл foreach . Вот как это работает:
-
$value) {
echo ‘
- ’ . $key . ‘:’. $value . ‘ ’; } ?>
Вот, что делает этот код:
- Каждому элементу массива присваивается переменная $key , значение которой равно ключу элемента. И переменная $value , равная значению элемента. Затем мы осуществляем PHP сортировку массива до тех пор, пока все элементы не будут обработаны;
- Этот код будет генерировать такой же маркированный список, как я создал вручную выше.
Многомерные массивы
В многомерном массиве PHP все его элементы являются массивами. Например:
$staff = array(0 => array([‘Name’] => ‘Topher’, [‘Position’] => ‘Standing or sitting, when not lying down’), 1 => array([‘Name’] => ‘Steve’, [‘Position’] => ‘Writer’));
У нас есть массив $staff с несколькими «людьми ». Мы могли бы создать несколько циклов foreach , чтобы «перебрать » каждого из них, например:
foreach($staff as $key => $person) { echo ‘
- ’;
foreach($person as $attribute => $value) {
echo ‘
- ’ . $attribute . ‘:’ . $value . ‘ ’; } echo ‘
В приведенном выше примере я обработал через цикл каждого человека, и внутри каждого человека я перебрал через цикл его данные, а затем вывел их. Я назвал элементы массива так, чтобы они соответствовали значению переменных.
Подводя итог
При работе с WordPress мы часто выполняем запросы к базе данных с помощью WP_Query и получаем PHP двумерный массив данных «Записи ». Для этого вы можете использовать foreach , чтобы обработать эти записи и вывести их.
Выходя за рамки
Массивы можно отсортировать, объединить, сравнить, просуммировать и изменить порядок размещения элементов. Я настоятельно рекомендую вам ознакомиться с официальной документацией . Большинство функций массивов имеют понятные названия, так что вы сможете понять, что они делают.
Бонусные функции
Вот несколько примеров того, что можно делать с массивами:
Этот код рассчитывает, сколько элементов содержится в массиве. Например, можно вывести «Найдено 14 элементов, удовлетворяющих условиям поиска » (документация ):
Функция массива PHP sort() сортирует данные по возрастанию, и назначает для переменных значения в соответствии с новым порядком. Можно отсортировать массив по числам или по строкам (документация ):
Функция is_array() проверяет, является ли переменная массивом (документация ). Это может быть полезно, чтобы преобразовать переменную еще в начале кода, например:
$array = ‘’;
А затем преобразовать в массив. Так можно определить, извлекли ли вы контент или еще нет.
Заключение
Массивы – это замечательный инструмент для организации и управления данными, который позволяет использовать их практически любым способом.