Меню
Бесплатно
Главная  /  Проблемы  /  Виды массивов в PHP. Объявление массива в php, виды массивов и работа с элементами Php пройти ассоциативный массив вглубь

Виды массивов в PHP. Объявление массива в php, виды массивов и работа с элементами Php пройти ассоциативный массив вглубь

Ассоциативные массивы

Простые массивы используют ключи только для разделения элементов и не имеют практической ценности:

В ассоциативных массивах ключи описывают, что именно за значение в них содержится - возраст, имя и т.д.:

"Владимир", "age" => 20]; ?>

Двумерные и многомерные массивы

До сих пор мы имели дело только с одномерными массивами, но мы также можем создать двумерный или любой многомерный массив:

"Вася"]; $human["hands"] = ["left", "right"]; print_r($human); ?>

Как видите, мы создали массив $human , а затем внутри него создали ещё один массив $human["hands"] . Результат в браузере:

Array ( => Вася => Array ( => left => right))

Мы можем создавать многомерные массивы любой вложенности. Вывод значений такого массива выглядит следующим образом:

Практическое применение многомерных массивов

Помните, на предыдущем уроке мы хотели сгруппировать товары и их характеристики? Напомню код, который у нас получился:

Samsung Galaxy"; $product2_price = 5000; $product2_quantity = true; $product3_name = "Nokia Lumia"; $product3_price = 4000; $product3_quantity = true; ?>

Теперь мы можем поместить всю эту информацию в одну переменную. При этом каждый товар будет представлять собой ассоциативный массив, а все товары будут находиться внутри простого массива:

"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 включена поддержка множества функций и свойств, способных управлять массивами данных всеми мыслимыми способами. Такая обширная поддержка может оказаться чересчур громоздкой для разработчиков, ищущих наиболее эффективные способы управления массивами в своих приложениях. В этой статье я приведу 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 могут содержать значения любого типа, такие как числа, строки, объекты. Они также могут содержать и другие массивы, что фактически означает создание многомерного или вложенного массива.

В данном уроке рассматриваются многомерные (вложенные) массивы PHP. Объясняется, как их создать, как ими манипулировать, как организовать цикл по всему многомерному массиву в PHP.

Как создать многомерный массив

Создать многомерный массив можно с помощью конструкции array() , что очень похоже на создание обычного массива. Разница заключается в том, что в многомерном массиве каждый элемент также является массивом.

Например:

$myArray = array(array(value1 , value2 , value3), array(value4 , value5 , value6), array(value7 , value8 , value9));

В выше приведённом примере создаётся двумерный массив. Массив верхнего уровня содержит 3 элемента. Каждый элемент также является массивом, содержащим 3 значения.

Также можно использовать ассоциативный массив в качестве многомерного массива. Следующий пример демонстрирует создание индексированного массива, который содержит 3 ассоциативных массива:

$movies = array(array("title" => "Rear Window", "director" => "Alfred Hitchcock", "year" => 1954), array("title" => "Full Metal Jacket", "director" => "Stanley Kubrick", "year" => 1987), array("title" => "Mean Streets", "director" => "Martin Scorsese", "year" => 1973));

Можно вкладывать массивы один в другой настолько глубоко, насколько нужно (хотя на практике глубина вложенности редко бывает больше 3-х уровней). В примере ниже демонстрируется 3-х мерный массив:

$myArray = array(array(array(value1 , value2), array(value3 , value4)), array(array(value5 , value6), array(value7 , value8)));

Доступ к элементам в многомерном массиве

Для получения доступа к элементам многомерного массива можно использовать синтаксис "квадратных скобок", который используется для работы с обычным массивом. Если нужно получить доступ к элементам второго уровня в двумерном массиве нужно просто использовать второй набор квадратных скобок, например:

$myArray = array(array("один", "два", "три"), array("четыре", "пять", "шесть")); // Выводим "шесть" echo $myArray; ?>

А вот пример, который демонстрирует доступ к различным элементам многомерного массива $movies , который мы создали раньше:

Echo "Название первого фильма:
"; echo $movies["title"] . "

"; echo "Режисер третьего фильма:
"; echo $movies["director"] . "

"; echo "Вложенный массив, который содержится в первом элементе:
"; print_r($movies); echo "

";

Выполнение кода выдаст следующий результат:

Название первого фильма: Rear Window Режисер третьего фильма: Martin Scorsese Вложенный массив, который содержится в первом элементе: Array ( => Rear Window => Alfred Hitchcock => 1954)

Последний пример использует $movies для организации доступа ко всему вложенному массиву в первом элементе массива верхнего уровня, а затем используется функция print_r() для вывода содержимого массива.

Организация перебора всех элементов многомерного массива в цикле

Так же, как и для обычного одномерного массива можно использовать foreach для организации перебора всех элементов многомерного массива. Нужно создать вложенный цикл foreach , то есть один цикл внутри другого:

  1. Внешний цикл берет каждый элемент массива верхнего уровня..
  2. Для каждого элемента верхнего уровня внутренний цикл перебирает вложенный массив, и так далее.

В примере создаётся 2-у мерный массив с информацией по фильмам, а затем организуется цикл по элементам массива для вывода информации на страницу:

$movies = array(array("title" => "Rear Window", "director" => "Alfred Hitchcock", "year" => 1954), array("title" => "Full Metal Jacket", "director" => "Stanley Kubrick", "year" => 1987), array("title" => "Mean Streets", "director" => "Martin Scorsese", "year" => 1973)); foreach ($movies as $movie) { echo "

"; foreach ($movie as $key => $value) { echo "
$key
$value
"; } echo "
"; }

Выполнение данного кода выдаст следующий результат:

Title Rear Window director Alfred Hitchcock year 1954 title Full Metal Jacket director Stanley Kubrick year 1987 title Mean Streets director Martin Scorsese year 1973

Резюме

Многомерные массивы подходят для хранения любых данных, например, для хранения множественных записей баз данных или значений для отображения в таблицах. Использование многомерных массивов может повысить уровень функциональности скриптов PHP.

На уроке будут рассмотрены возможности по работе с массивами в php, объявление массива, виды массивов: многомерные и ассоциативные массивы

  1. Массивы с числовыми индексами
  2. $fruits="яблоко"; $fruits="груша"; $fruits="апельсин"; $fruits="абрикос";

    Данный вариант инициализации массива сегодня практически не используется. Используется следующий вариант работы с массивами:

  3. Ассоциативный массив
  4. Данный вариант создания массива использует объект array:

    $fruits = array(1 => "яблоко", 2 => "груша", 3 => "апельсин", 4 => "абрикос"); // Начиная с версии PHP 5.4 $fruits = array[ 1 => "яблоко", 2 => "груша", 3 => "апельсин", 4 => "абрикос" ];

    Доступ к элементам массива

    1 2 3 4 5 6 7 8 $fruits [ 0 ] = "яблоко" ; $fruits [ 1 ] = "груша" ; $fruits [ 2 ] = "апельсин" ; $fruits [ 3 ] = "абрикос" ; echo "Первый элемент массива - " . $fruits [ 0 ] . "
    " ; echo "Второй элемент массива - " . $fruits [ 1 ] . "
    " ; echo "Третий элемент массива - " . $fruits [ 2 ] . "
    " ;

    $fruits="яблоко"; $fruits="груша"; $fruits="апельсин"; $fruits="абрикос"; echo "Первый элемент массива - ". $fruits ."
    "; echo "Второй элемент массива - ". $fruits ."
    "; echo "Третий элемент массива - ". $fruits ."
    ";

    Результатом выполнения программы будет:

    Важно: В качестве индекса элемента в ассоциативном массиве может быть не число, а слово (тип string )

    Рассмотрим пример:

    Пример: Создать массив student со значениями имен, фамилий и возраста студентов. Вывести на экран значения элементов массива

    $student = array("Name" => John, "Surname" => Smith, "Age" => 20); echo "имя пользователя " . $student["Name"] . "


    ";

    $student["Name"] = "John"; $student["Surname"] = "Smith"; $student["Age"] = 20; echo "имя пользователя " . $student["Name"] . "
    "; echo "фамилия пользователя " . $student["Surname"] . "
    "; echo "возраст пользователя " . $student["Age"] . "
    ";

    Результат:

    Важно: Строковые ключи (индексы) нужно всегда заключать в кавычки

    Индексированные массивы без ключа:

    Также следует учесть, что индексы в массиве вообще можно не писать при инициализации массива значениями. Тогда мы создаем так называемый массив-коллекцию (объект-коллекцию ):

    $student = array ("John" , "Smith" , 20 ) ;

    $student = array("John","Smith", 20);

    В таком случае интерпретатор сам присвоит им числовые индексы, начиная с 0

    Пример преобразования типов и перезаписи элементов.
    Обратите внимание на использование процедуры var_dump()

    1 2 3 4 5 6 7 8 9 "a" , "1" => "b" , 2 => "c" , 2 => "d" , ) ; var_dump ($my_array ) ; ?>

    "a", "1"=> "b", 2 => "c", 2 => "d",); var_dump($my_array); ?>

    Результат:

    Array(3) { => string(1) "a" => string(1) "b" => string(1) "d" }

    Пример использования многомерного массива и организации доступа к его элементам

    1 2 3 4 5 6 7 8 9 10 11 12 "1" , 2 => 2 , "multi" => array ( "1_1" => "1_1" ) ) ; var_dump ($array_odnom [ "first" ] ) ; var_dump ($array_odnom [ 2 ] ) ; var_dump ($array_odnom [ "multi" ] [ "1_1" ] ) ; ?>

    "1", 2 => 2, "multi" => array("1_1" => "1_1")); var_dump($array_odnom ["first"]); var_dump($array_odnom ); var_dump($array_odnom ["multi"]["1_1"]); ?>

    Результат:

    String(1) "1" int(2) string(3) "1_1"

    Пример: создать двумерный массив размерностью 3 х 2. Заполнить его значениями для первой строки: «1_1», «1_2», «1_3»; для второй строки: «2_1», «2_2», «2_3». Вывести на экран первый элемент массива


    Выполнение:
    1 2 3 4 5 6 7 8 9 10 11 12 $array_odnom = array ( 1 => array ( 1 => "1_1" , 2 => "1_2" , 3 => "1_3" ) , 2 => array ( 1 => "2_1" , 2 => "2_2" , 3 => "2_3" ) , ) ; echo $array_odnom [ 1 ] [ 1 ] ;

    $array_odnom = array(1 => array(1 => "1_1", 2 => "1_2", 3 => "1_3"), 2 => array(1 => "2_1", 2 => "2_2", 3 => "2_3"),); echo $array_odnom;

    Задание php2_1: создайте двумерный массив 3 х 3 — верхний левый угол таблицы умножения Пифагора(1, 2, 3; 4, 6, 8 …)



    Лабораторная работа:
    Допустим, у Вас есть какое-то объявление и несколько разных людей, которым нужно это объявление отправить. Для этого Вы делаете заготовку с содержанием объявления, внутри которого есть ряд изменяющихся параметров: массива имен людей и массив событий. Вывести один вариант итогового объявления на экран. Для задания массивов использовать и ассоциативный массив.

    Используйте шаблон объявления и ориентируйтесь по цветам:

    Красным – массивы.
    Коричневым – числовая переменная.
    Синим – константа.

    Уважаемый (ая), Иван Иванович !
    Приглашаем Вас на день открытых дверей .
    Дата события: 12 мая.
    С уважением, Василий.


    Дополните код:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 // объявление константы define ("SIGN" , "С уважением, Вася" ) ; // массив для имен адресатов $names = array (... ) ; // массив для событий $events = array ( "op_doors" => "день открытых дверей" , "vistavka" => "выставку" , ... ) ; $str = "Уважаемый(ая), $names !
    "
    ; $str .= ...; $str .= ...; echo ...;

    // объявление константы define("SIGN","С уважением, Вася"); // массив для имен адресатов $names = array(...); // массив для событий $events = array("op_doors" => "день открытых дверей", "vistavka" => "выставку", ...); $str = "Уважаемый(ая), $names!
    "; $str .= ...; $str .= ...; echo ...;

Последнее обновление: 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 "
"; } // присвоим одному из элементов другое значение $technics["phones"]["nokia"] = "Nokia Lumnia 930"; // выведем это значение echo $technics["phones"]["nokia"]; ?>