Каждый современный человек владеет ноутбуком, но как самому убрать возникающие...
Последнее обновление: 1.11.2015
Массивы предназначены для хранения наборов данных или элементов. Каждый элемент в массиве имеет свой уникальный ключ и значение. Итак, сохраним в массив список моделей телефонов:
Samsung 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. По существу, ассоциативные массивы играют такую важную роль в веб-программировании, что в PHP включена поддержка множества функций и свойств, способных управлять массивами данных всеми мыслимыми способами. Такая обширная поддержка может оказаться чересчур громоздкой для разработчиков, ищущих наиболее эффективные способы управления массивами в своих приложениях. В этой статье я приведу 10 подсказок, которые помогут вам резать, кромсать и шинковать ваши данные бесконечным числом способов.
1. Добавление элементов массива.
PHP – слабо типизированный язык, т. е. в нем не надо детально описывать ни массив, ни его размер. Вместо этого массив можно одновременно объявить и наполнить:
$capitals = array("Alabama" => "Montgomery", "Alaska" => "Juneau", "Arizona" => "Phoenix");
Дополнительные элементы массива могут присоединяться следующим способом:
$capitals["Arkansas"] = "Little Rock";
Если вы работаете с массивами, пронумерованными числами, и предпочли бы присоединять элементы (в начало массива) и прикреплять элементы, используя детально-названную функцию, рассмотрите array_push() и array_unshift() функции (эти функции не работают с ассоциативными массивами).
2. Удаление элементов массива
Чтобы удалить элемент из массива, воспользуйтесь unset() функцией:
Unset($capitals["California"]);
Работая с массивами, пронумерованными числами, вы получаете больше свободы в том, что касается удаления элементов массива. Т. е. вы можете воспользоваться функциями array_shitt() и array_pop() , чтобы удалить элемент с начала и с конца массива соответственно.
3. Меняем местами ключи и значения
Предположим, что вы захотели создать новый массив с именем $states , столицы штатов в котором будут индексами, а сами штаты – ассоциативными значениями. Данная задача (меняем местами ключи и значения) легко решается с помощью array_flip() функции:
$capitals = array("Alabama" => "Montgomery", "Alaska" => "Juneau", "Arizona" => "Phoenix"); $states = array_flip($capitals); // $states = array(// "Montgomery" => string "Alabama", // "Juneau" => string "Alaska", // "Phoenix" => string "Arizona" //);
4. Слияние массивов
Предположим, что предыдущий массив использовался в сочетании с основанным на web-технологиях "flash card" (flashcard - карточка с текстом и картинкой (используется при обучении иностранному языку)) сервисом и вы захотели дать возможность студентам проверить их знания не только о мировых столицах, но и столицах соединенных штатов. Можно соединить массив (со столицами штатов) с массивом (с мировыми столицами) использую array_merge() функцию:
$stateCapitals = array("Alabama" => "Montgomery", "Alaska" => "Juneau", "Arizona" => "Phoenix"); $countryCapitals = array ("Australia" => "Canberra", "Austria" => "Vienna", "Algeria" => "Algiers"); $capitals = array_merge($stateCapitals, $countryCapitals);
5. Редактирование значений массивов
Предположим, что найденные в массиве данные могут содержать ошибки связанные с употреблением заглавных букв, а вы хотите исправить эти ошибки, прежде чем вносить данные в базу данных. В этом случае можно воспользоваться array_map() функцией, чтобы применить callback-функцию к каждому элементу массива:
Function capitalize($element) { $element = strtolower($element); // Переводим все буквы в нижний регистр return ucwords($element); // Преобразуем в верхний регистр первый символ каждого слова в строке } $capitals = array("Alabama" => "montGoMEry", "Alaska" => "Juneau", "Arizona" => "phoeniX"); $capitals = array_map("capitalize", $capitals);
6. Сортируем массивы по ключам
Флэшкард приложения (flashcard - карточка с текстом и картинкой (используется при обучении иностранному языку)) прибегают к различным техникам обучения, включая сортировку карточек определенными способами, к примеру, по алфавиту. Можно сортировать ассоциативные массивы по ключам, используя ksort() функцию:
$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); ksort($capitals);
7. Рандомизация порядка массива
Перемешать элементы в случайном порядке можно при помощи функции shuffle() :
$capitals = array("Arizona" => "Phoenix",
"Alaska" => "Juneau",
"Alabama" => "Montgomery");
shuffle($capitals);
foreach ($capitals as $k=>$v)
echo "$k: $v
";
Результат:
Обратите внимание, на выходе мы получаем не ассоциативный массив, а числовой массив .
Если вместо рандомизации массива вы хотите наугад выбрать значение, воспользуйтесь array_rand() функцией.
8. Определяем, существуют ли ключи и значения
Можно воспользоваться in_array() функцией, чтобы определить, существуют ли элементы массива:
$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); if (in_array("Juneau", $capitals)) { echo "Exists!"; } else { echo "Does not exist!"; }
Возможность определить: существуют ли ключи массива, менее известна. Реализуется же она с помощью array_key_exists() функции:
$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); if (array_key_exists("Alaska", $capitals)) { echo "Key exists!"; } else { echo "Key does not exist!"; }
9. Ищем массив
Возможно, вы захотите снабдить флэшкард ресурс поиском, чтобы пользователи легко могли найти штат, которой связан с определенной столицей. Это можно осуществить с помощью функции array_search() (эта функция ищет в массиве заданное значение и возвращает соответствующий ключ):
$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); $state = array_search("Juneau", $capitals); // $state = "Alaska"
10. Стандартная PHP библиотека
Стандартная PHP библиотека (SPL) снабжает разработчиков порядочным числом структур данных, интерфейсов, исключений и других свойств, которыми раньше язык PHP похвастаться не мог. Среди этих свойств есть возможность итерации (повторения) массива с помощью объекто-оринетированного синтаксиса.
$capitals = array("Arizona" => "Phoenix",
"Alaska" => "Juneau",
"Alabama" => "Montgomery");
$arrayObject = new ArrayObject($capitals);
foreach ($arrayObject as $state => $capital)
{
printf("The capital of %s is %s
", $state, $capital);
}
// The capital of Arizona is Phoenix
// The capital of Alaska is Juneau
// The capital of Alabama is Montgomery
Это только одно из классных свойств, включенных в SPL. Для получения большей информации ознакомьтесь с PHP документацией.
Доброго времени суток, хабражители!
В своей статье я хочу поговорить об обработке многомерных ассоциативных массивов в PHP. На мой взгляд, не всегда удобно получать необходимую информацию из многомерного массива. Одно дело если массив двумерный:
$array = array("dimension1" => array("key1" => "value1",
"key2" => "value2"));
?>
То, конечно, получить, интересующие нас значения, легко:
Echo $array["dimension1"]["key1"]; // value1
Но, а если мы имеем массив n-мерный? Например, пятимерный:
$array = array("dimension1" => array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\"m value1", "value2" => "Hey! I\"m value2"))))));
То, чтобы получить значение по ключу, например, «value1», нам надо прописать такой код:
Echo $array["dimension1"]["dimension2"]["dimension3"]["dimension4"]["dimension5"]["value1"]; // Hey! I"m value1
Я такую запись не назвал бы красивой, хотя она является правильной. Я предлагаю слегка сделать эту запись красивой путем приведения ее к такому виду:
Echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hey! I"m value1
Согласитесь, ведь смотрится, действительно, куда симпотичней, по сравнению со стандартной записью.
Итак, для начала нам понадобится создать класс, который будет обрабатывать наш массив. Назовем его easyArray и сделаем его одиночкой (Singleton):
Код
class easyArray{
private static $instance; // Состояние класса.
private $Array; // Массив, который был передан классу.
private function __construct(){
// Запилили конструктор.
}
private function __clone(){
// Запилили метод клонирования.
}
public static function getInstance(){
if(null === self::$instance){
self::$instance = new self();
}
return self::$instance;
}
После того, как наш класс стал одиночкой, добавим ему весьма важный метод, который будет записывать полученный массив в приватную переменную:
Код
public function loadArray($newArray){
if(is_array($newArray)){
$this->Array = $newArray;
return $this;
}else{
$error = "К сожалению вы передали не массив.";
throw new Exception($error);
}
}
Из кода видно, что мы также осуществляем проверку того, что было передано на вход метода. В случае того, если был передан все-таки не массив, мы просто выбросим исключение с ошибкой "К сожалению вы передали не массив
.". Если проверка прошла успешно, то мы записываем в приватную переменную полученный массив и возвращаем текущий объект.
Ну а теперь мы переопределим магический метод "__get()" нашего класса. Это необходимо для того, чтобы получить желаемый нами результат. Итак:
Код
public function __get($index){ if(isset($this->Array[$index])){ if(is_array($this->Array[$index])){ $this->loadArray($this->Array[$index]); return $this; }else{ return $this->Array[$index]; } }else{ $error = "Отсутствует ключ (".$index.") в массиве"; throw new Exception($error); } }
Первым делом, мы проверяем наличие запрошенного ключа в массиве, в случае отсутствия такового, выбрасываем исключение с ошибкой ""Отсутствует ключ (".$index.") в массиве"
". Далее проверяем является ли, запрошенный ключ массивом. Если по такому ключу в массиве находится значение, то просто возвращаем это значение. А если все-таки это массив, то мы отправляем его методу "loadArray($newArray)
" и возвращаем текущий объект ($this).
И, как последний штрих нашего класса, добавим метод, который будет возвращать текущий массив, с которым работает наш класс:
Код
public function arrayReturn(){
return $this->Array;
}
Итак, наш класс готов, но чтобы получить значения, теперь мы должны использовать такой код:
Echo easyArray::getInstance()->loadArray($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hey! I"m value1
Стало даже длиннее, чем было. Но эта проблема решаема, и для этого нам понадобится простая функция:
Function easyA($newArray){ return easyArray::getInstance()->loadArray($newArray); }
Ну, а теперь проверим, что мы получили в итоге:
Код
$array = array("dimension1" => array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\"m value1",
"value2" => "Hey! I\"m value2"))))));
require_once("easyArray.php");
require_once("easyArrayFunction.php");
echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hey! I\"m value1
echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value2; // Hey! I\"m value2
?>
Все работает, как и задумывалось.
Помимо этого, данному классу можно передавать конфигурационные файлы типа:
Код
return array("dimension1" => array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\"m value1 from file array.php",
"value2" => "Hey! I\"m value2 from file array.php"))))));
?>
Для этого необходимо использовать такую конструкцию:
Код
echo easyA(require_once("array.php"))->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hey! I"m value1 from file array.php
Возможно я изобрел велосипед, но я думаю, что данная статья будет интересна, как новичкам, так и остальным программистам.
Спасибо за внимание.
Ассоциативные массивы
Простые массивы используют ключи только для разделения элементов и не имеют практической ценности:
В ассоциативных массивах ключи описывают, что именно за значение в них содержится - возраст, имя и т.д.:
"Владимир", "age" => 20]; ?>
Двумерные и многомерные массивы
До сих пор мы имели дело только с одномерными массивами, но мы также можем создать двумерный или любой многомерный массив:
"Вася"]; $human["hands"] = ["left", "right"]; print_r($human); ?>
Как видите, мы создали массив $human , а затем внутри него создали ещё один массив $human["hands"] . Результат в браузере:
Array ( => Вася => Array ( => left => right))
Мы можем создавать многомерные массивы любой вложенности. Вывод значений такого массива выглядит следующим образом:
Практическое применение многомерных массивов
Помните, на предыдущем уроке мы хотели сгруппировать товары и их характеристики? Напомню код, который у нас получился:
Теперь мы можем поместить всю эту информацию в одну переменную. При этом каждый товар будет представлять собой ассоциативный массив, а все товары будут находиться внутри простого массива:
"iPhone", "price" => 5000, "quantity" => true ], [ "name" => "Samsung Galaxy", "price" => 5000, "quantity" => true ], [ "name" => "Nokia Lumia", "price" => 4000, "quantity" => true ] ]; ?>
Или альтернативный вариант:
"iPhone", "price" => 5000, "quantity" => true ]; $products = [ "name" => "Samsung Galaxy", "price" => 5000, "quantity" => true ]; $products = [ "name" => "Nokia Lumia", "price" => 4000, "quantity" => true ]; ?>
Результатом обоих вариантов будет:
Array ( => Array ( => iPhone => 5000 => 1) => Array ( => Samsung Galaxy => 5000 => 1) => Array ( => Nokia Lumia => 4000 => 1))
1. Создайте массив $city , добавьте в него ключ name с любым значением. 2. Создайте подмассив streets с любыми случайными улицами. Каждая улица должна иметь имя (name) и количество домов (buildings_count), а также подмассив из номеров домов (old_buildings), подлежащих сносу.
Давайте разберемся, что же такое массив в 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), мы должны сделать следующее:
Результат этого кода:
Давайте получим элемент с индексом 2:
Результат:
Если же мы попытаемся получить элемент с несуществующим индексом, например – 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, но эта дыра по-прежнему останется. Это работает именно так и об этом нужно помнить.
И снова вернёмся к ключам
Вообще говоря, эти ключи можно задать самому, ещё при создании массива. Вот так:
Результат:
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.
Если теперь добавить элемент в массив, то у него будет индекс, на единицу больше максимального числового значения ключа:
Результат:
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. Проще простого:
Результат:
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)
Если значение по такому ключу уже есть в массиве, оно просто заменится новым. Например, давайте заменим яблоко на манго:
Результат:
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" => "Автор статьи" ]; ?>
= $article["title"] ?>
= $article["text"] ?>
= $article["author"] ?>
Результат:
Многомерные массивы
Помните, в начале урока я сказал, что по ключам массива хранятся какие-то значения, и в нашем случае это строки. Так вот, элементом массива, вообще говоря, может являться что угодно. Даже сам массив. =)
"Название статьи", "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" => "Иванов" ] ]; ?>
= $article["title"] ?>
= $article["text"] ?>
= $article["author"]["first_name"] . " " . $article["author"]["last_name"] ?>
Результат:
Разумеется, можно и внутри этого значения создать массив, а внутри него – ещё один, пока не надоест.
В следующем уроке мы рассмотрим более сложные и интересные примеры работы с массивами.