Среда, 15.05.2024, 07:06
Меню сайта
Категории раздела
JQuery плагины [59]
JQuery уроки [69]
PHP полезное [24]
PHP уроки [21]
Css [26]
JS [3]
SQL [9]
Css 3 [17]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » PHP уроки

Типы. Массивы 1 часть

Массивы

Вернуться к: Типы

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

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

Синтаксис

Определение при помощи array()

Массив может быть создан языковой конструкцией array(). В качестве параметров она принимает любое количество разделенных запятыми пар key => value (ключ => значение).

array(  key =>  value
 , ...
 )
// key может быть integer или string
// value может быть любым значением любого типа
$arr = array("foo" => "bar"12 => true);

echo 
$arr["foo"]; // bar
echo $arr[12];    // 1
?>

key может быть либо integer, либо string. Если ключ - это стандартное представление integer, он так и будет интерпретироваться (т.е. "8" будет восприниматься как 8, тогда как "08" будет интерпретироваться как "08"). Float в key будет обрезан до integer. В PHP нет разницы между индексными и ассоциативными массивами; существует только один тип массива, который может содержать и числовые, и строковые индексы.

Значение может быть любого имеющегося в PHP типа.

Замечание:

Попытка доступа к неопределенному ключу в массиве - это то же самое, что и попытка доступа к любой другой неопределенной переменной: будет вызвана ошибка уровня E_NOTICE, и результат будет NULL.

$arr = array("somearray" => array(=> 513 => 9"a" => 42));

echo 
$arr["somearray"][6];    // 5
echo $arr["somearray"][13];   // 9
echo $arr["somearray"]["a"];  // 42
?>

Если вы не указываете ключ для приведенного значения, то берется максимальный числовой индекс и новый ключ будет равен этому значению плюс 1. Если вы укажете ключ, которому уже присвоено значение, оно будет перезаписано.

// Этот массив эквивалентен ...
array(=> 433256"b" => 12);

// ...этому массиву
array(=> 43=> 32=> 56"b" => 12);
?>
Внимание

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

Используя TRUE как key, вы получите ключ 1 типа integer. Используя в FALSE как key, вы получите ключ 0 типа integer. Используя в качестве ключа NULL, вы получите пустую строку. Использование в качестве ключа пустой строки создаст (или перезапишет) ключ с пустой строкой и его значение; это не то же самое, что использование пустых квадратных скобок.

Массивы и объекты не могут быть использованы в качестве ключей. Это вызовет предупреждение: Illegal offset type ('Недопустимый тип смещения').

Создание/модификация с помощью синтаксиса квадратных скобок

Существующий массив может быть изменен явной установкой значений в нем.

Это выполняется присвоением значений массиву при указании в скобках ключа. Кроме того, вы можете опустить ключ, в этом случае добавьте к имени переменной пустую пару скобок ([]).

$arr[key] = value;
$arr[] = value;
// key может быть integer или string
// value может быть любым значением любого типа

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

$arr = array(=> 112 => 2);

$arr[] = 56;    // В этом месте скрипта это
                // то же самое, что и $arr[13] = 56;

$arr["x"] = 42// Это добавляет к массиву новый
                // элемент с ключом "x"
                
unset($arr[5]); // Это удаляет элемент из массива

unset($arr);    // Это удаляет массив полностью
?>

Замечание:

Как уже говорилось выше, если ключ не был указан, то будет взят максимальный из существующих целочисленных индексов, и новым ключом будет это максимальное значение плюс 1. Если целочисленных индексов еще нет, то ключом будет 0 (ноль).

Учтите, что максимальное целое значение ключа не обязательно существует в массиве в данный момент. Оно могло просто существовать в массиве какое-то время, с тех пор как он был переиндексирован в последний раз. Следующий пример это иллюстрирует:

// Создаем простой массив.
$array = array(12345);
print_r($array);

// Теперь удаляем каждый элемент, но сам массив оставляем нетронутым:
foreach ($array as $i => $value) {
    unset(
$array[$i]);
}
print_r($array);

// Добавляем элемент (обратите внимание, что новым ключом будет 5, вместо 0).
$array[] = 6;
print_r($array);

// Переиндексация:
$array array_values($array);
$array[] = 7;
print_r($array);
?>

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

Array
(
 [0] => 1
 [1] => 2
 [2] => 3
 [3] => 4
 [4] => 5
)
Array
(
)
Array
(
 [5] => 6
)
Array
(
 [0] => 6
 [1] => 7
)

Полезные функции

Для работы с массивами существует достаточное количество полезных функций. Смотрите раздел функции для работы с массивами.

Замечание:

Функция unset() позволяет удалять ключи массива. Обратите внимание, что массив НЕ будет переиндексирован. Если вы действительно хотите поведения в стиле "удалить и сдвинуть", можно переиндексировать массив используя array_values().

$a = array(=> 'один'=> 'два'=> 'три');
unset(
$a[2]);
/* даст массив, представленный так:
   $a = array(1 => 'one', 3 => 'three');
   а НЕ так:
   $a = array(1 => 'one', 2 =>'three');
*/

$b array_values($a);
// Теперь $b это array(0 => 'one', 1 =>'three')
?>

Управляющая конструкция foreach существует специально для массивов. Она предоставляет возможность легко пройтись по массиву.

Категория: PHP уроки | Добавил: ChronoW (20.11.2012)
Просмотров: 639 | Теги: php массивы | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: