В PHP существует 2 метода инициализации массивов. Первый из них состоит в простом присвоении значений элементам массива:
$car[] = "passenger car";
$car[] = "land-rover";
echo($car[1]); // выводит "land-rover"
?>
Индекс массива можно указать явно:
$car[0] = "passenger car";
$car[1] = "land-rover";
echo($car[1]); // выводит "land-rover"
?>
Заметим, что если при объявлении элементов массива смешиваются
переменные с явной индексацией, и без индексации, то тому элементу,
индекс которого не задан, PHP присвоит первый доступный индекс, после
самого большого использованного до сих пор индекса. Например, если мы
создадим массив с элементами, индексы которых будет равны, скажем, 10,
20 и 30, а потом создадим элемент, индекс которого явно не укажем, то
ему автоматически присвоится индекс 31:
$car[10] = "passenger car";
$car[20] = "land-rover";
$car[30] = "station-wagon";
$car[] = "victoria";
echo($car[31]);
?>
Альтернативный способ определения массивов состоит в использовании конструкции array():
$car = array("passenger car","land-rover");
echo($car[1]); // выводит "land-rover"
?>
Для явного указания индексов в этом случае применяется оператор =>:
$car = array("passenger car", 5 => "land-rover",
"station-wagon","victoria");
echo($car[0]); echo(" "); // выводит "passenger car"
echo($car[5]); echo(" "); // выводит "land-rover"
echo($car[6]); echo(" "); // выводит "station-wagon"
echo($car[7]); // выводит "victoria"
?>
Индексами массива могут быть и строки:
$car = array("pc" => "passenger car", "lr" => "land-rover");
echo($car["lr"]); echo(" "); // выводит "land-rover"
echo($car["pc"]); // выводит "passenger car"
?>
Обход массива в цикле в PHP4 можно организовать при помощи цикла foreach, который имеет следующий синтаксис:
foreach (array as [$key =>] $value)
{
statements;
}
Смысл этого цикла прост: при проходе каждого элемента массива в
переменную $key помещается индекс этого элемента, а в переменную $value
– его значение. Имена этих двух переменных совершенно произвольны.
Пример:
$car = array("passenger car", "land-rover",
"station-wagon","victoria");
foreach($car as $index => $val)
{
echo("$index -> $val ");
}
?>
Как видно из синтаксиса, переменная $key необязательна и может быть опущена:
echo(
"available cars:
"
);
$car = array("passenger car", "land-rover",
"station-wagon","victoria");
foreach($car as $val)
{
echo("- $val
\n");
}
echo(" ");
?>
Для инициализации многомерных массивов используются вложенные
конструкции array(). Обход многомерных массивов достигается при помощи
вложенных циклов. В следующем скрипте показан пример создания и обхода
многомерного массива.
Пример:
$ship = array(
"Passenger ship" => array("Yacht","Liner","Ferry"),
"War ship" => array("Battle-wagon","Submarine","Cruiser"),
"Freight ship" => array("Tank vessel","Dry-cargo ship","Container
cargo ship")
);
foreach($ship as $key => $type)
{
echo(
"$key\n"."
\n");
foreach($type as $ship)
{
echo("\t- $ship
\n");
}
}
echo(" \n");
?>
Ну а теперь, будем рассматривать функции, которые есть в PHP для
работы с массивами. И первое с чего мы начнем – это функции сортировки
массивов. Однако до этого я еще скажу о трех функциях, которыми мы
часто будем пользоваться в наших примерах.
Функция count()
Синтаксис:
int count(mixed var)
Эта функция принимает в качестве аргумента массив и возвращает
количество элементов в нем. Как понимаете, штука незаменимая когда
будем бегать по массиву циклом for().
Функция in_array()
Синтаксис:
boolean in_array(mixed needle, array haystack [, bool strict])
Эта функция ищет в массиве haystack значение needle и возвращает true если оно найдено и false в противном случае.
Функция reset()
Синтаксис:
mixed reset(array array)
Функция reset() устанавливает указатель массива на первый элемент и возвращает значение первого элемента массива.
Небольшое замечание. У каждого массива в PHP есть внутренний
указатель на текущий элемент массива. При работе с такими конструкциями
как foreach не надо думать об указателе, поскольку foreach
устанавливает его в начало массива. Однако, многие другие функции
массивов, такие как prev(), next(), занимаются перемещением указателя
массива, что может иметь значение при работе с такими функциями, как
array_walk(), которые начинают обработку массива с того места, где
находится указатель.
|