Как вывести двумерный массив php. Массивы в примерах. Функции работы с массивами php

Продолжаем изучение массивов. В прошлых статьях мы уже научились объявлять массивы; разобрались: для чего они нужны и где могут использоваться; познакомились с многомерными и ассоциативными массивами. Теперь самое время поговорить о переборе элементов массива.
Зачастую бывает необходимо перебрать все элементы массива и проделать с ними какое-либо действие.

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

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

Для начала поговорим о переборе элементов массива при помощи циклов.

Для этого используются 3 вида циклов for, foreach и while .

Перебор элементов массива. Цикл for()

Для перебора элементов массива-списка, можно сделать следующее:

1. Сначала мы объявляем сам массив;

3. После объявляем цикл for , где в круглых скобках устанавливаем счетчик (объявляется переменная «i» со значением ноль, если эта переменная меньше общего числа элементов массива, то каждую итерацию значение «i» будет увеличиваться на единицу);

4. А в теле цикла уже можно прописать, что делать с каждым элементом массива. Можно, например, просто вывести их на экран.

Все вышеперечисленное иллюстрирует следующий код:

"; } ?>

В результате его выполнения мы увидим на экране значения элементов массива, выведенные каждое с новой строки.

Цикл for и ассоциативные массивы

А вот для перебора элементов ассоциативного массива такой способ уже не подойдет по той простой причине, что индексами ассоциативного массива являются не числа, а строки.

Чтобы перебрать элементы ассоциативного массива в цикле for можно воспользоваться следующей конструкцией:

" .$Mass[$key] . "
"; } ?>

Как видите, мы объявили ассоциативный массив.

reset() – устанавливает указатель на первый элемент массива;

next() – перемещает указатель на один элемент массива вперед;

key() – возвращает ключ текущего элемента массива.

А потом в теле цикла мы выводим индекс элемента массива, стрелку и значение элемента массива. Каждую пару индекс-значение выводим с новой строки.

Также вместо reset() можно использовать end() , тогда указатель будет установлен на последний элемент массива. Но в таком случае нужно и вместо next() использовать prev() , чтобы перемещать указатель не вперед, а назад.

Так мы можем перебрать элементы ассоциативного массива в обратном порядке.

Как Вы, наверное, знаете, цикл for используется далеко не только для работы с массивами.

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

Перебор элементов массива. Цикл foreach()

Цикл foreach() позволяет нам работать как с обычными массивами-списками, так и с ассоциативными.

Вот пример работы цикла для перебора элементов простого массива-списка с выводом всех значений элементов массива на экран.

"; } ?>

В итоге на экране мы увидим все значения элементов этого массива.

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

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

$value) { echo $key . "=>" . $value . "
"; } ?>

И в данном случае мы увидим на экране пару: ключ – значение, между которыми будет стрелка.

Перебор элементов массива. Цикл while()

Еще один цикл, который мы можем использовать для перебора всех элементов массива – это цикл while() .

При этом нам помогут еще две функции, которые мы будет использовать совместно с этим циклом. Это функции list() и each() .

В случае с массивами-списками мы будем использовать данный цикл - вот так:

"; } ?>

Наверное, Вы уже догадались, что на экране мы увидим значения элементов массива.

Здесь функция each() возвращает текущий элемент массива, а после перемещает указатель.

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

" . $value . "
"; } ?>

Вот так мы получим и ключи и значения.

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

Можно осуществлять перебор элементов массива и без использования циклов. Для этого мы будем использовать специальную функцию array_walk() .

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

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

" . $value . "
"; } $Mass["One"] = 5; $Mass["Two"] = 10; $Mass["Three"] = 15; array_walk($Mass, "f_print"); ?>

В итоге на экране мы увидим следующее.

Вот, пожалуй, и все, что я хотела Вам рассказать о переборе элементов массива.

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

В следующей статье мы поговорим о добавлении и удалении элементов массива в разные его места.

Жду Ваших комментариев. Делитесь статьей с друзьями при помощи кнопок социальных сетей и подписывайтесь на обновление блога, чтобы всегда быть в курсе новых публикаций.

С Вами была Анна Котельникова. Успехов и до новых встреч!

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

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

Двумерный массив - массив, который в качестве значений хранит в себе другие массивы. Рассмотрим создание двумерного массива с помощью конструктора array() :

$flowers = array(array("розы", 100 , 15), array("тюльпаны", 60 , 25), array("орхидеи", 180 , 7));

Массив $flowers содержит три массива. Как вы помните, для доступа к элементам одномерного массива надо указывать имя массива и ключ. То же самое верно и в отношении двумерных массивов, с одним исключением: каждый элемент имеет два ключа: первый для выбора строки, второй для выбора столбца.

Чтобы вывести элементы этого массива можно вручную прописать доступ к каждому из них, но лучше воспользоваться вложенными циклами:

Ручной доступ к элементам
"; echo $flowers." цена ".$flowers." количество ".$flowers."
"; echo $flowers." цена ".$flowers." количество ".$flowers."
"; echo "

Использование циклов для вывода элементов

"; echo "
    "; for ($row = 0; $row < 3; $row++) { echo "
  1. Номер строки $row"; echo "
      "; for ($col = 0; $col < 3; $col++) { echo "
    • ".$flowers[$row][$col]."
    • "; } echo "
    "; echo "
  2. "; } echo "
"; ?>

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

$flowers = array(array("Название" => "розы", "Цена" => 100, "Количество" => 15), array("Название" => "тюльпаны", "Цена" => 60, "Количество" => 25,), array("Название" => "орхидеи", "Цена" => 180, "Количество" => 7));

Ключи создают дополнительное удобство для работы с массивом в тех случаях, когда нужно получить одно из значений. Необходимые данные можно легко найти, если обратиться к правильной ячейке, используя значимые имена строки и столбца. Однако при этом мы теряем возможность последовательно обхода массива с помощью цикла for .

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

"розы", "Цена" => 100, "Количество" => 15), array("Название" => "тюльпаны", "Цена" => 60, "Количество" => 25,), array("Название" => "орхидеи", "Цена" => 180, "Количество" => 7)); echo "

Ручной доступ к элементам ассоциативного массива

"; for ($row = 0; $row < 3; $row++) { echo $flowers[$row]["Название"]." цена ".$flowers[$row]["Цена"] ." количество ".$flowers[$row]["Количество"]; echo "
"; } echo "

Использование цикла foreach для доступа к элементам

"; echo "
    "; for ($row = 0; $row < 3; $row++) { echo "
  1. Номер строки $row"; echo "
      "; foreach($flowers[$row] as $key => $value) { echo "
    • ".$value."
    • "; } echo "
    "; echo "
  2. "; } echo "
"; ?>

Необязательно использовать для создания двумерного массива конструктор array() , можно воспользоваться и коротким синтаксисом - квадратными скобками:

$flowers = [ [ "Название" => "розы", "Цена" => 100, "Количество" => 15 ], [ "Название" => "тюльпаны", "Цена" => 60, "Количество" => 25, ], [ "Название" => "орхидеи", "Цена" => 180, "Количество" => 7 ] ];

Трёхмерные массивы

Не обязательно ограничиваться только двумя измерениями: так же, как элементы массива могут содержать массивы, эти массивы, в свою очередь, могут содержать новые массивы.

Трёхмерный массив характеризует ширину, высоту и глубину. Если представлять двумерный массив в виде таблицы, то трёхмерный добавляет к этой таблице слои. Каждый элемент такого массива будет ссылаться на слой, строку и столбец.

Если немного модифицировать наш массив с цветами, то можно переделать его в трёхмерный. В коде, представленном ниже видно, что трёхмерный массив - массив, содержащий массив массивов:

$flowers = [ [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7], ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ] ];

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

"; for ($layer = 0; $layer < 3; $layer++) { echo "

  • Номер слоя $layer"; echo "
      "; for ($row = 0; $row < 3; $row++) { echo "
    • Номер строки $row"; echo "
        "; for ($col = 0; $col < 3; $col++) { echo "
      • ".$flowers[$layer][$row][$col]."
      • "; } echo "
      "; echo "
    • "; } echo "
    "; echo "
  • "; } echo ""; ?>

    1. Что такое массив PHP?
    2. Пример массива PHP?
    3. Одномерный массив (векторный)
    — индексный
    — ассоциативный
    4. Двумерный массив (массив в массиве, матрица)
    5. Функции для работы с массивами (массив в массиве, матрица)

    Начать данную тему хотелось бы с отречённых примеров. Допустим, мы рассматриваем какого-либо человека . У него есть имя, фамилия, адрес, телефон, пол, рост, цвет глаз и так далее. Информацию по всем этим пунктам можно отнести к массиву данных о человеке.

    Массив может быть другого типа, без какой-либо конкретики по пунктам. Будет только тема. Допустим, это 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 — функция поиска в массиве.

    Урок 7. Массивы в PHP

    Имеет два аргумента. Проще говоря, имеет вил array_search(‘что’, где)

    $animals=’dog’;
    $animals=’cat’;
    $animals=’bird’;
    echo array_search(‘cat’,$animals); // выведет индекс элемента — цифру 2
    Shuffle — функция, которая перемешивает ключи значений массива.

    shuffle($animals); // выстроит элементы в случайном порядке
    Спасибо за внимание!

    Предыдущая статья
    Урок 6. Циклы в PHPСледующая статья
    Урок 8. Подключение файла в PHP. Include и require

    Комментарии к статье (vk.com)

    Создает пустой массив.

    Вы можете вывести значения в массив позже, например:

    На данный момент $ myArray содержит «дерево», «дом» и «собака». Каждая из приведенных выше команд добавляется к массиву, сохраняя элементы, которые уже были там.

    Придя с других языков, этот способ добавления массива мне показался странным. Я ожидал сделать что-то вроде $ myArray + = «собака» или что-то еще …

    или, может быть, метод «add ()», такой как коллекции Visual Basic. Но этот прямой синтаксис append является коротким и удобным.

    Вы действительно должны использовать функцию unset () для удаления элементов:

    … удалит «дом» из массива (массивы основаны на нулевом значении).

    Основы работы с массивами в PHP

    … уничтожит весь массив.

    Чтобы быть ясным, синтаксис пустой квадратной скобки для добавления к массиву — это просто способ сообщить PHP, чтобы автоматически присваивать индексы каждому значению, а не присваивать индексы. Покрытия, PHP на самом деле делает это:

    Вы можете назначать индексы самостоятельно, если хотите, и можете использовать любые цифры, которые вы хотите. Вы также можете присвоить номера индексов некоторым элементам, а не другим. Если вы это сделаете, PHP заполнит недостающие номера индексов, увеличиваясь с самого большого номера индекса, назначенного по мере его поступления.

    Поэтому, если вы это сделаете:

    … для элемента «собака» будет присвоен индексный номер 21. PHP не выполняет интеллектуального сопоставления шаблонов для поэтапного присвоения индексов, поэтому он не будет знать, что вам, возможно, захотелось присвоить индекс 30 «собаке» ». Вы можете использовать другие функции, чтобы указать шаблон приращения для массива. Я не буду вдаваться в это, но все это в PHP-документах.

    В некоторых других языках (например, AS3) было отмечено, что инициализация нового массива выполняется быстрее, если сделать это как а не для целей создания объекта и создания экземпляра. Интересно, существуют ли какие-либо эквивалентности в PHP?

    Массивы в PHP. Работа с массивами в PHP.

    В данной статье рассматривается работа с массивами в PHP (основы). Массивы в PHP – это тип данных, который позволяет сохранять несколько переменных в одной.

    Вот один простой пример:

    В приведенном выше примере $products – это массив, в котором мы сохранили несколько различных продуктов. Далее мы вывели все эти продукты, обращаясь к каждому через “индексы” (ключи) : 0, 1 и 2.

    Конечно, отдельные значения можно хранить и в отдельных переменных, например, так:

    Это, конечно, хорошо, но давайте представим, что нам потребовалось вдруг перебрать все эти элементы. Как тут быть? Писать код под каждую переменную? Это долго и неудобно. Решение – использование массивов.
    Используя циклы мы можем на каждой итерации (шаге) получить доступ к очередному элементу, благодаря индексам (ключам).

    Создание массива в PHP.

    В php не требуется делать объявление массива. Создать массив мы можем, используя функцию array():

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

    Виды массивов.

    1. ”Индексируемые” массивы или “автомассивы”. Примеры такого массива мы уже приводили выше. Особенностью данных массивов является то, что они имеют числовые индексы, которые создаются автоматически (“на лету”). Нумерация элементов начинается с 0.

    Как определить длину (размер) индексируемого массива.

    Использование массивов

    Используем функцию count() :

    Перебор элементов. Перебрать все элементы автомассива можно с помощью конструкции for или foreach :

    Чтобы добавить новый элемент в массив (осуществить запись в массив), нам достаточно выполнить следующую строку:

    Перебор всех элементов ассоциативного массива осуществляется следующим образом:

    3. Многомерные массивы содержат в качестве элементов другие массивы:

    Мы можем создать и трехмерный массив:

    вывод массива в PHP. Вывести любой массив можно с помощью функции print_r() , например:

    При этом при удалении элемента индексы других элементов остаются неизменными.

    Функции для работы с массивами:

    Сортировка массивов
    array_search – поиск значения в массиве

    Последнее обновление: 1.11.2015

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

    "; ?>

    Здесь создается массив $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"]; ?>

    (массив в массиве, матрица)
    5. Функции для работы с массивами (массив в массиве, матрица)

    Что такое массив 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); // выстроит элементы в случайном порядке
    Спасибо за внимание!