Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мова РНР.Питання до заліку.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Так что же в этом плохого?

Когда-нибудь в будущем, команда разработчиков PHP, возможно, пожелает добавить еще одну константу или ключевое слово, либо константа из другого кода может вмешаться и тогда у вас могут возникнуть проблемы. Например, вы уже не можете использовать таким образом слова empty и default, поскольку они являются зарезервированными ключевыми словами.

Замечание: Повторим, внутри строки (string), заключенной в двойные кавычки, корректно не окружать индексы массива кавычками, поэтому "$foo[bar]" является верной записью. Более подробно почему - смотрите вышеприведенные примеры, а также раздел обработка переменных в строках.

Преобразование в массив

Для любого из типов: integer, float, string, boolean и resource, преобразование значения в массив дает результатом массив с одним элементом (с индексом 0), являющимся скалярным значением, с которого вы начали. Другими словами, (array)$scalarValue - это точно то же самое, что и array($scalarValue).

Если вы преобразуете в массив объект (object), вы получите в качестве элементов массива свойства (переменные-члены) этого объекта. Ключами будут имена переменных-членов, с некоторыми примечательными исключениями: целочисленные свойства станут недоступны; к закрытым полям класса (private) спереди будет дописано имя класса; к защищенным полям класса (protected) спереди будет добавлен символ '*'. Эти добавленные значения с обоих сторон также имеют нулевые байты. Это может вызвать несколько неожиданное поведение:

<?php class A {     private $A; // Это станет '\0A\0A' } class B extends A {     private $A; // Это станет '\0B\0A'     public $AA; // Это станет 'AA' } var_dump((array) new B()); ?>

Вышеприведенный код покажет 2 ключа с именем 'AA', хотя один из них на самом деле имеет имя '\0A\0A'.

Если вы преобразуете в массив значение NULL, вы получите пустой массив.

Сравнение

Массивы можно сравнивать при помощи функции array_diff() и операторов массивов.

Примеры

The array type in PHP is very versatile. Here are some examples: Тип массив в PHP является очень гибким, вот несколько примеров:

<?php // это $a = array( 'color' => 'red',             'taste' => 'sweet',             'shape' => 'round',             'name'  => 'apple',             4        // ключом будет 0           ); $b = array('a', 'b', 'c'); // . . .полностью соответствует $a = array(); $a['color'] = 'red'; $a['taste'] = 'sweet'; $a['shape'] = 'round'; $a['name']  = 'apple'; $a[]        = 4;        // ключом будет 0 $b = array(); $b[] = 'a'; $b[] = 'b'; $b[] = 'c'; // после выполнения этого кода, $a будет массивом // array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round',  // 'name' => 'apple', 0 => 4), а $b будет // array(0 => 'a', 1 => 'b', 2 => 'c'), или просто array('a', 'b', 'c'). ?>

Пример #1 Использование array()

<?php // Массив как карта (свойств) $map = array( 'version'    => 4,               'OS'         => 'Linux',               'lang'       => 'english',               'short_tags' => true             );              // исключительно числовые ключи $array = array( 7,                 8,                 0,                 156,                 -10               ); // это то же самое, что и array(0 => 7, 1 => 8, ...) $switching = array(         10, // ключ = 0                     5    =>  6,                     3    =>  7,                      'a'  =>  4,                             11, // ключ = 6 (максимальным числовым индексом было 5)                     '8'  =>  2, // ключ = 8 (число!)                     '02' => 77, // ключ = '02'                     0    => 12  // значение 10 будет перезаписано на 12                   );                    // пустой массив $empty = array();          ?>

Пример #2 Коллекция

<?php $colors = array('red', 'blue', 'green', 'yellow'); foreach ($colors as $color) {     echo "Вам нравится $color?\n"; } ?>

Результат выполнения данного примера:

Вам нравится red?

Вам нравится blue?

Вам нравится green?

Вам нравится yellow?

Изменение значений массива напрямую стало возможным с версии PHP 5 путем передачи их по ссылке. До этого необходим следующий обходной прием:

Пример #3 Изменение элемента в цикле

<?php // PHP 5 foreach ($colors as &$color) {     $color = strtoupper($color); } unset($color); /* это нужно для того, чтобы последующие записи в $color не меняли последний элемент массива */ // Обходной прием для старых версий foreach ($colors as $key => $color) {     $colors[$key] = strtoupper($color); } print_r($colors); ?>

Результат выполнения данного примера:

Array

(

[0] => RED

[1] => BLUE

[2] => GREEN

[3] => YELLOW

)

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

Пример #4 Индекс, начинающийся с единицы

<?php $firstquarter  = array(1 => 'Январь', 'Февраль', 'Март'); print_r($firstquarter); ?>

Результат выполнения данного примера:

Array

(

[1] => 'Январь'

[2] => 'Февраль'

[3] => 'Март'

)

Пример #5 Заполнение массива

<?php // заполняем массив всеми элементами из директории $handle = opendir('.'); while (false !== ($file = readdir($handle))) {     $files[] = $file; } closedir($handle);  ?>

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

Пример #6 Сортировка массива

<?php sort($files); print_r($files); ?>

Поскольку значение массива может быть чем угодно, им также может быть другой массив. Таким образом вы можете создавать рекурсивные и многомерные массивы.

Пример #7 Рекурсивные и многомерные массивы

<?php $fruits = array ( "фрукты"  => array ( "a" => "апельсин",                                        "b" => "банан",                                        "c" => "яблоко"                                      ),                   "числа"   => array ( 1,                                        2,                                        3,                                        4,                                        5,                                        6                                      ),                   "дырки"   => array (      "первая",                                        5 => "вторая",                                             "третья"                                      )                 ); // Несколько примеров доступа к значениям предыдущего массива echo $fruits["дырки"][5];    // напечатает "вторая" echo $fruits["фрукты"]["a"]; // напечатает "апельсин" unset($fruits["дырки"][0]);  // удалит "первая" // Создаст новый многомерный массив $juices["apple"]["green"] = "good";  ?>

Обратите внимание, что при присваивании массива всегда происходит копирование значения. Чтобы скопировать массив по ссылке, вам нужно использовать оператор ссылки.

<?php $arr1 = array(2, 3); $arr2 = $arr1; $arr2[] = 4; // $arr2 изменился,              // $arr1 все еще array(2, 3)               $arr3 = &$arr1; $arr3[] = 4; // теперь $arr1 и $arr3 одинаковы ?>

Строки

Объекты

Типы

PHP Manual