После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-06-28
Основы PHP → Массивы
PHP, Сортировка массивов, Работа с массивами, Преобразовать строку в массив

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

Что такое массив?

Массив — это именованный набор однотипных переменных. Он состоит из элементов. Обращение к каждому элементу происходит по его номеру. Нумерация начинается с нуля, т. е. у первого элемента индекс 0, у второго элемента индекс 1 и т. д.

Массивы в PHP — чрезвычайно мощный инструмент. По сути, это даже не массив, а словарь. Словарь (он же хэш-таблица) — такая структура данных, которая хранит множество пар "ключ—значение". Ключи не могут повторяться. В качестве ключа может использоваться как целое число, так и строка. (Что такое словари Вы можете узнать в более серьезных курсах по C++ или "Профессиональном PHP")

Есть несколько методов инициализации массива. Один из них состоит просто в том, чтобы начать присваивать значения элементам массива. Приводимый далее код создает массив с именем $aLanguages из трех элементов. Поскольку индексы не указаны, РНР по умолчанию присваивает числовые индексы 0, 1 и 2:

$aLanguages[] = "Arabic";
$aLanguages[] = "German";
$aLanguages[] = "Korean";
      echo($aLanguages[2]); // Выводит "Korean"

Чтобы явно указать индекс, заключите его в квадратные скобки:

$aLanguages[100] = "Arabic";
$aLanguages[400] = "German";
$aLanguages[300] = "Korean";
$aLanguages[] = "Tagalog";
      echo($aLanguages[300]); // Выводит "Korean"
      echo($aLanguages[401]); // Prints "Tagalog"

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

$aLanguages = array("Arabic", "German", "Korean", "Tagalog");
   echo($aLanguages[2]); // Выводит "Korean"

И снова, поскольку индексы не были заданы, они присваиваются элементам массива по умолчанию. Для явного указания индексов в конструкции array() применяется оператор =>:

$aLanguages = array("Arabic", 3 => "German", "Korean", "Tagalog");
   echo($aLanguages[0]); // Выводит "Arabic"
   echo($aLanguages[3]); // Выводит "German"
   echo($aLanguages[4]); // Выводит "Korean"
   echo($aLanguages[5]); //Выводит "Tagalog"

Как упоминалось ранее, индексы массива могут быть строками:

$aLanguages = array("ar" => "Arabic", "de" => "German", "tl" => "Tagalog");
      echo($aLanguages["tl"]); // Выводит "Tagalog"
$aLanguages["ko"] = "Korean";
      echo($aLanguages["ko"]); // Выводит "Korean"

Обход массивов циклом

Самый простой способ обойти все элементы массива:

for ($i = 0; $i < count($arr); $i++)
{
   ...
}

Однако способ годится только тогда, когда в качестве ключа используется порядковый номер элемента (начиная с нуля). Для обхода любых массивов (в общем случае — словарей) существует специальный оператор foreach. 
Его синтаксис прост:

foreach (Массив as [$key =>] $value)
{
   Операторы
}

Оператор foreach проходит каждый элемент массива по одному разу. В каждом проходе в переменную $key помещается индекс этого элемента, а в переменную $valueзначение. Имена этих двух переменных произвольны.

foreach ($aLanguages as $sIndex => $sVal)
{
   echo("$sIndex is $sVal <br/>");
}

Переменная для ключа необязательна, поскольку не всегда нужна внутри цикла. В данном примере переменная $key опущена, а вместо $value используется $sLang :

echo("Available Languages: <br/><ul>");
foreach ($aLanguages as $sLang)
{
    echo( "<li>$sLang</H>" ) ;
}
echo("</ul>");

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

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

сount()

int count(mixed var)

Функция count() принимает в качестве аргумента массив и возвращает количество элементов в нем. Если переменная не установлена или не содержит элементов, возвращается ноль.

in_array()

boolean in_array(mixed needle, array haystack [, bool strict])

Эта функция ищет в массиве haystack значение needle и возвращает true, если оно найдено, и false в противном случае.

sort()

void sort(array array [, int sort_flags])

Эта функция применяется для сортировки значений в массиве. Необязательный второй параметр sort_flags указывает, как должны сортироваться данные. Допустимыми значениями являются SORT_REGULAR , SORT_NUMERIC , устанавливающие сравнение значений как чисел, и SORT_STRING , устанавливающее сравнение значений как строк.

РНР содержит много функций сортировки, синтаксис которых очень близок к sort() . Эти функции по-разному ведут себя, предоставляя разные варианты процедуры сортировки, включая направление сортировки, обработку ключей и алгоритмы сравнения. Подробнее смотрите в документации такие функции, как arsort() , asort() , ksort() , natsort() , natcasesort() , rsort() , usort() , array_ multisort() и uksort() .

explode() и implode()

Эти две функции официально считаются строковыми, но они касаются массивов. explode() расщепляет строку на отдельные элементы, помещаемые в массив, используя разделитель, переданный в качестве аргумента. implode() осуществляет противоположную операцию. Она сжимает элементы массива в одну строку, соединяя их с помощью переданного аргумента:

// Превратить массив в строку, с разделителем — точкой с запятой:
$sLangString = implode(';', $aLanguages);
   echo($sLangString);

$sSentence = 'Per aspera ad astra';

// Превратить предложение в массив отдельных слов:
$aWords = explode(' ', $sSentence);
543
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока