Добро пожаловать!
Здесь вы можете найти ответ на интересующий вас вопрос в отрасли сайтостроения, познакомится ближе с web технологиями и web стандартами.

PHP и MySQL

Глава 4. Массивы.

§ 4.1. Инициализация массивов.

В PHP существует два способа инициализации массивов. Первый из них состоит в простом присвоении значений элементам массива:

<?
   $person[] = "Бендер Остап Ибрагимович";
   $person[] = "Корейко Александр Иванович";
   // выводит "Корейко Александр Иванович"
   echo $person[1];
?>

Индекс массива можно указать явно:

<?
   $person[0] = "Бендер Остап Ибрагимович";
   $person[1] = "Корейко Александр Иванович";
   // выводит "Корейко Александр Иванович"
   echo $person[1];
?>

Обратите внимание, что если при объявлении элементов массива смешиваются переменные с явной индексацией, и без индексации, то тому элементу, индекс которого не задан, PHP присвоит первый доступный индекс, после самого большого использованного до сих пор индекса. Например, если мы создадим массив с элементами, индексы которых будет равны, скажем, 10, 20 и 30, а потом создадим элемент, индекс которого явно не укажем, то ему автоматически присвоится индекс 31:

<?
   $person[10] = "Бендер Остап Ибрагимович";
   $person[20] = "Корейко Александр Иванович";
   $person[30] = "Козлевич Адам Казимирович";
   $person[] = "Паниковский Михаил Самуэлевич";
   // выводит "Паниковский Михаил Самуэлевич"
   echo $person[31];
?>

Альтернативный способ определения массивов состоит в использовании конструкции array():

<?
   $person = array( "Бендер Остап Ибрагимович",
                    "Корейко Александр Иванович",
                    "Козлевич Адам Казимирович" );
   // выводит "Корейко Александр Иванович"
   echo $person[1];
?>

Для явного указания индексов в этом случае применяется оператор =>:

<?
   $person = array( "Бендер Остап Ибрагимович",
                    5 => "Корейко Александр Иванович",
                    "Козлевич Адам Казимирович",
                    "Паниковский Михаил Самуэлевич" );
   // выводит "Бендер Остап Ибрагимович"
   echo $person[0]."<br>\n";
   // выводит "Корейко Александр Иванович"
   echo $person[5]."<br>\n";
   // выводит "Козлевич Адам Казимирович"
   echo $person[6]."<br>\n";
   // выводит "Паниковский Михаил Самуэлевич"
   echo $person[7]."<br>\n";
?>

Индексами массива могут быть и строки:

<?
   $person = array( "prsn0" => "Бендер Остап Ибрагимович",
                    "prsn1" => "Корейко Александр Иванович",
                    "prsn2" => "Козлевич Адам Казимирович" );
   // выводит "Бендер Остап Ибрагимович"
   echo $person["prsn0"]."<br>\n";
   // выводит "Корейко Александр Иванович"
   echo $person["prsn1"]."<br>\n";
   // выводит "Козлевич Адам Казимирович"
   echo $person["prsn2"]."<br>\n";
?>

§ 4.2. Цикл foreach для обхода массивов.

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

foreach (array as [$key =>] $value)
{
   statements;
}

Смысл этого цикла прост: при проходе каждого элемента массива в переменную $key помещается индекс этого элемента, а в переменную $value — его значение. Имена этих двух переменных совершенно произвольны.

<?
   $person = array( "Бендер Остап Ибрагимович",
                    "Корейко Александр Иванович",
                    "Козлевич Адам Казимирович",
                    "Паниковский Михаил Самуэлевич" );
   echo "<table border='1'>\n";
   foreach($person as $index => $val)
   {
      echo "<tr><td>".$index."</td><td>".$val."</td></tr>\n";
   }
   echo "</table>\n";
?>

Как видно из синтаксиса, переменная $key необязательна и может быть опущена:

<?
   echo "<ul>\n"
   $person = array( "Бендер Остап Ибрагимович",
                    "Корейко Александр Иванович",
                    "Козлевич Адам Казимирович",
                    "Паниковский Михаил Самуэлевич" );
   foreach($person as $val)
   {
      echo "<li>".$val."</li>\n";
   }
   echo "</ul>\n";
?>

§ 4.3. Многомерные массивы.

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

<?
   $objects = array(
      "window" => array("open", "close", "alert"),
      "history"  => array("back", "forward", "go(n)"),
      "location" => array("assign", "reload", "replace")
   );
   echo "<h2>Объекты и методы JavaScript</h2>\n";
   foreach($objects as $key => $methods)
   {
      echo "<h2>".$key."</h2>\n";
      echo "<ul>\n";
      foreach($methods as $val)
      {
         echo "  <li>".$val."</li>\n";
      }
      echo "</ul>\n";
   }
?>

Результат выполнения этого скрипта::

Многомерные массивы

Ну а теперь, будем рассматривать функции, которые есть в PHP для работы с массивами. И первое с чего мы начнем — это функции сортировки массивов. Однако до этого рассмотрим еще три функции, которыми мы часто будем пользоваться в наших примерах.

4.3.1. Функция count()

Синтаксис:
int count(mixed var)

Эта функция принимает в качестве аргумента массив и возвращает количество элементов в нем.

4.3.2. Функция in_array()

Синтаксис:
boolean in_array(mixed needle, array haystack [, bool strict])

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

4.3.3. Функция reset()

Синтаксис:
mixed reset(array array)

Функция reset() устанавливает указатель массива на первый элемент и возвращает значение первого элемента массива.

Замечание.
У каждого массива в PHP есть внутренний указатель на текущий элемент массива. При работе с такими конструкциями как foreach не надо думать об указателе, поскольку foreach устанавливает его в начало массива. Однако, многие другие функции массивов, такие как prev(), next(), занимаются перемещением указателя массива, что может иметь значение при работе с такими функциями, как array_walk(), которые начинают обработку массива с того места, где находится указатель.