Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
м числом измерений. Например, если кроме имени о человеке 
известен также его возраст, то можно инициировать массив $Names так: 
$Names["Ivanov"] = array("name"=>"Dmitry","age"=>25); 
$Names["Petrova"] = array("name"=>"Helen", "age"=>23); 
или даже так: 
$Names=array( 
"Ivanov" => array("name"=>"Dmitry","age"=>25), 
"Petrova"=> array("name"=>"Helen", "age"=>23) 
); 
Как же добраться до нужного нам элемента в нашем массиве? Нетрудно догадаться 
по аналогии с другими языками: 
echo $Names["Ivanov"]["age"]; // напечатает "25" 
echo $Names["Petrova"]["bad"]; // ошибка: нет такого элемента "bad" 
Довольно несложно, не правда ли? Кстати, мы можем видеть, что ассоциативные 
массивы в PHP удобно использовать как некие структуры, хранящие данные. Это по- 

хоже на конструкцию struct в Си (или record в Паскале). Пожалуй, это единст- 
венный возможный способ организации структур, но он очень гибок. 
Операции над массивами 
Существует довольно много операций, которые можно выполнять с массивами (в до- 
полнение к общим операциям над переменными). Давайте перечислим их, а заодно и 
подытожим все сказанное выше. 
Доступ по ключу 
Как мы уже знаем, ассоциативные массивы — объекты, которые наиболее приспо- 
соблены для выборки из них данных путем указания нужного ключа. В PHP и для 
всех массивов, и для списков (которые, еще раз напомню, также являются массива- 

ми) используется один и тот же синтаксис, что является очень большим достоинст- 

вом. Вот как это выглядит: 
echo $Arr["anykey"]; // выводит элемент массива $Arr с ключом anykey 
echo $Arr["first"]["second"]; // так используются двумерные массивы 
echo (SomeFuncThatReturnsArray())[5]; // ОШИБКА! Так нельзя! 

Глава 10. Ассоциативные массивы 173 
// Вот так правильно: 
$Arr= SomeFuncThatReturnsArray(); 
echo $Arr[5]; 
Последний пример показывает, что PHP сильно отличается от Си с точки зрения ра- 

боты с массивами: в нем нет такого понятия, как "контекст массива", а значит, 
мы не 
можем применить [] непосредственно к значению, возвращенному функцией. 
Величина $Arr[ключ] является полноценным "левым значением", т. е. может стоять 
в левой части оператора присваивания, от нее можно брать ссылку с помощью 
опера- 
тора &, и т. д. Например: 
$Arr["anykey"]=array(100,200); // присваиваем элементу массива 100 
$ref=&$Arr["first"]["second"]; // $ref — синоним элемента массива 
$Arr[]="for add"; // добавляем новый элемент 
Функция count() 
Мы можем определить размер (число элементов) в массиве при помощи стандартной 
функции count(): 
$num=count($Names); // теперь в $num — число элементов в массиве 
Сразу отмечу, что count() работает не только с массивами, но и с объектами и 
даже 
с обычными переменными (для последних count() всегда равен 1, как будто пере- 
менная — это массив с одним элементом). Впрочем, ее очень редко применяют для 
чего-либо, отличного от массива — разве что по-ошибке. 
Слияние массивов 
Еще одна фундаментальная операция — слияние массивов, т. е. создание массива, 
содержащего как элементы одного, так и другого массива. Реализуется это при 
помо- 
щи оператора +. Например: 
$a=array("a"=>"aa", "b"=>"bb"); 
$b=array("c"=>"cc", "d"=>"dd"); 
$c=$a+$b; 
В результате в $c окажется ассоциативный массив, содержащий все 4 элемента, а 
именно: array("a"=>"aa", "b"=>"bb", "c"=>"cc", "d"=>"dd"), причем 
именно в указанном порядке. Если бы мы написали $c=$b+$a, результат бы был не- 
много другой, а именно: array("c"=>"cc", "d"=>"dd", "a"=>"aa", 
"b"=>"bb"), т. е. элементы расположены в другом порядке. Видите, как 
проявляется 
направленность массивов? Она заставляет оператор + стать некоммутативным, т. е. 

$a+
 
<<-[Весь Текст]
Страница: из 287
 <<-