Опубликован: 01.03.2005 | Доступ: свободный | Студентов: 35446 / 5530 | Оценка: 4.31 / 4.06 | Длительность: 16:41:00
ISBN: 978-5-9556-0026-0
Лекция 2:

Основы синтаксиса

Тип array (массив)

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

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

Определение при помощи array()
array (key => value,
       key1 => value1, ... )

Языковая конструкция array () принимает в качестве параметров пары ключ => значение, разделенные запятыми. Символ => устанавливает соответствие между значением и его ключом. Ключ может быть как целым числом, так и строкой, а значение может быть любого имеющегося в PHP типа. Числовой ключ массива часто называют индексом. Индексирование массива в PHP начинается с нуля. Значение элемента массива можно получить, указав после имени массива в квадратных скобках ключ искомого элемента. Если ключ массива представляет собой стандартную запись целого числа, то он рассматривается как число, в противном случае – как строка. Поэтому запись $a["1"] равносильна записи $a[1], так же как и $a["-1"] равносильно $a[-1].

<?php
$books = array ("php" =>
                "PHP users guide",
                12 => true);
echo $books["php"];
//выведет "PHP users guide"
echo $books[12];
//выведет 1
?>
Пример 2.9. Массивы в PHP

Если для элемента ключ не задан, то в качестве ключа берется максимальный числовой ключ, увеличенный на единицу. Если указать ключ, которому уже было присвоено какое-то значение, то оно будет перезаписано. Начиная с PHP 4.3.0, если максимальный ключ – отрицательное число, то следующим ключом массива будет ноль ( 0 ).

<?php
// массивы $arr и $arr1 эквивалентны
$arr = array(5 => 43, 32, 56, "b" => 12);
$arr1 = array(5 => 43, 6 => 32,
              7 => 56, "b" => 12);
?>
Пример 2.10. Массивы в PHP

Если использовать в качестве ключа TRUE или FALSE, то его значение переводится соответственно в единицу и ноль типа integer. Если использовать NULL, то вместо ключа получим пустую строку. Можно использовать и саму пустую строку в качестве ключа, при этом ее надо брать в кавычки. Так что это не то же самое, что использование пустых квадратных скобок. Нельзя использовать в качестве ключа массивы и объекты.

Определение с помощью синтаксиса квадратных скобок

Создать массив можно, просто записывая в него значения. Как мы уже говорили, значение элемента массива можно получить с помощью квадратных скобок, внутри которых нужно указать его ключ, например, $book["php"]. Если указать новый ключ и новое значение, например, $book["new_key"]="new_value", то в массив добавится новый элемент. Если мы не укажем ключ, а только присвоим значение $book[]="new_value", то новый элемент массива будет иметь числовой ключ, на единицу больший максимального существующего. Если массив, в который мы добавляем значения, еще не существует, то он будет создан.

<?
$books["key"]= value; // добавили в массив
                    // $books значение 
                    // value с ключом key
$books[] = value1; /* добавили в массив
                      значение value1 с
                      ключом 13, поскольку
                      максимальный ключ у
                      нас был 12 */
?>

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

<?php
$books = array ("php" =>
                "PHP users guide",
                12 => true);

$books[] =
 "Book about Perl"; // добавили элемент
                    // с ключом (индексом)
                    // 13 это эквивалентно 
                    // $books[13] =
                    // "Book about Perl";
$books["lisp"] =
 123456; /* Это добавляет к массиву новый
            элемент с ключом "lisp" и
            значением 123456 */
unset($books[12]); // Это удаляет элемент
                   // c ключом 12 из массива 
unset ($books); // удаляет массив полностью
?>

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

<?php
$arr =
 array ("a","b","c"); /* Создаем массив
                         со значениями
                         "a", "b" и "c".
                         Поскольку ключи
                         не указаны, они
                         будут 0,1,2
                         соответственно */
print_r($arr); // выводим массив (и ключи,
               // и значения)
unset($arr[0]);
unset($arr[1]);
unset($arr[2]); 
         // удаляем из него все значения 
print_r($arr);  // выводим массив (и ключи,
                // и значения)
$arr[] = "aa";  // добавляем новый элемент
                // в массив. 
                // Его индексом (ключом)
                // будет 3, а не 0
print_r($arr);

$arr =
 array_values($arr); // переиндексируем
                     // массив 
$arr[] = "bb"; // ключом этого элемента
               // будет 1
print_r($arr);
?>
Пример 2.11. Переиндексация массива

Результатом работы этого скрипта будет:

Array ( [0] => a [1] => b [2] => c ) 
Array ( ) 
Array ( [3] => aa ) 
Array ( [0] => aa [1] => bb )
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?