Если массив существует, в него можно добавлять дополнительные элементы.
Это делается напрямую с помощью оператора присваивания (знак равенства)
так же, как присвоение значения строке или числу. При этом можно не зада
вать ключ добавленного элемента, но в любом случае при обращении к масси
ву необходимы квадратные скобки. Добавляя два новых элемента к списку
$List, напишем:
$List[] = "pears";
$List[] = "tomatoes";
Если ключ не задан, каждый элемент будет добавлен к существующему мас
сиву и проиндексирован следующим порядковым номером. Если мы добавим
новые элементы к массиву из предыдущего раздела, элементы которого имели
индексы 1, 2 и 3, то у груш (pears) будет индекс 4, а у помидоров (tomatoes) 5.
Когда вы явно задаете индекс, а значение с ним уже существует, то существо
вавшее в этом месте значение будет потеряно и заменено новым:
$List[3] = "pears";
$List[4] = "tomatoes";
Теперь значение элемента с индексом 4 «помидоры», а элемента «апельси
ны» (oranges) больше нет. Я бы посоветовал не указывать ключ при добавле
нии элементов в массив, если, конечно, вы не хотите специально переписать
какиелибо существующие данные. Однако, если в качестве индексов исполь
зуются строки, ключи нужно указывать обязательно, чтобы не потерять зна
чения.
Мы попробуем добавить в массив новые элементы, переписав сценарий
soups.php. Сначала распечатав исходные элементы массива, а затем исходные
вместе с добавленными, мы легко увидим произошедшие изменения.
Подобно тому как можно узнать длину строки (количество содержащихся
в ней символов) с помощью функции strlen ( ) , также нетрудно определить ко
личество элементов в массиве с помощью функции count ( ) :
$HowMany = count($Array);
- Откройте файл soups.php в текстовом редакторе.
- После инициализации массива с помощью функции array ( ) добавьте сле
дующую запись: - Добавьте в массив три дополнительных элемента.
- Пересчитайте элементы в массиве и распечатайте это значение.
- Сохраните сценарий (листинг 7.2), загрузите его на сервер и протестируй
те в браузере (рис.).
$HowMany = count($Soups);
print ("The array contains $HowMany elements.<P>n");
Функцией count ( ) будет определено, сколько элементов содержится в мас
сиве $ Soups. Присвоив это значение переменной, его можно распечатать.
$Soups["Thursday"] = "Chicken Noodle";
$Soups["Friday"] = "Tomato";
$Soups["Saturday"] = "Cream of Broccoli";
$HowManyNow = count($Soups);
print ("The array now contains $HowManyNow elements.<P>n");
Листинг 7.2 т Можно напрямую добавлять по одному элементу в массив,
присваивая каждому элементу значение с помощью соответствующего опера
тора. С помощью функции count ( ) удастся узнать, сколько элементов содер
жится в массиве.
1 <HTML>
2 <HEAD>
3 <TITLE>Using Arrays</TITLEx/HEAD>
4 <BODY>
5 <?php
6 $Soups = array(
7 "Monday"=>"Clam Chowder",
8 "Tuesday"=>"White Chicken Chili",
9 "Wednesday"=>"Vegetarian");
10 $HowMany = count($Soups);
11 print ("The array contains $HowMany
elements.<P>n");
12 $Soups["Thursday"] = "Chicken Noodle";
13 $Soups["Friday"] = "Tomato";
14 $Soups["Saturday"] = "Cream of
Broccoli";
15 $HowManyNow = count($Soups);
16 print ("The array now contains
$HowManyNow elemente.<P>n");
17 ?>
18 </BODY>
19 </HTML>
В РНР 4.0 появилась новая функция, позволяющая добавлять один массив
к другому. Эту операцию можно также назвать слиянием или сцеплением мас
сивов. Функция array_merge ( ) вызывается следующим образом:
$NewArray = array_merge ($OneArray, $TwoArray);
Вы можете переписать страницу soups.php с использованием этой функции,
если работаете с сервером, на котором установлен РНР 4.0.
Объединение двух массивов
- Откройте файл soups.php в текстовом редакторе, если он еще не открыт.
- После инициализации массива $Soups сосчитайте его элементы и напеча
тайте результат. - Объедините два массива в один.
- Сосчитайте элементы нового массива и напечатайте результат.
- Закройте РНР и HTMLдокумент.
- Сохраните файл (листинг 7.3), загрузите
его на сервер и протестируйте в браузере
(рис.).
$HowMany = count($Soups);
print ("The $Soups array contains $HowMany elements.<P>n");
- Создайте второй массив, сосчитайте его элементы и также напечатайте
результат.
$Soups2 = array(
"Thursday"=>"Chicken Noodle",
"Friday"=>"Tomato",
"Saturday"=>"Cream of Broccoli");
$HowMany2 = count($Soups2);
print ("The $Soups2 array contains $HowMany2 elements.<P>n");
$TheSoups = array_merge ($Soups, $Soups2);
Проследите, чтобы массивы были расположены именно в этом порядке
($Soups, потом $Soups2), то есть элементы четверга и пятницы должны быть
добавлены к элементам понедельника среды, а не наоборот.
$HowMany3 = count($TheSoups);
print ("The $TheSoups array contains
—$HowMany3 elements.<P>n");
?></BODYx/HTML>
Листинг 7.3 т Функция Array_merge ( ) явля
ется новой. Это одна из нескольких дополни
тельных функций РНР 4.0, предназначенная для
работы с массивами. Используя массивы, мож
но значительно сэкономить время.
1 <HTML>
2 <HEAD>
3 <TITLE>Using Arrays</TITLEx/HEAD>
4 <BODY>
5 <?php
6 $Soups = array!
7 "Monday"=>"Clam Chowder",
"Tuesday"=>"White Chicken Chili",
8 "Wednesday"=>"Vegetarian"
9 );
10 $HowMany = count($Soups);
11 print ("The $Soups array contains $HowMany elements.<P>n");
12 $Soups2 = array(
13 "Thursday"=>"Chicken Noodle",
14 "Friday"=>"Tomato",
15 "Saturday"=>"Cream of Broccoli"
16 ); .
17 $HowMany2 = count($Soups2);
18 print ("The $Soups2 array contains $HowMany2 elements.<P>n");
19 $TbeSoupe = array_merge ($Soups, $Soups2);
20 $HowMany3 •= count ($TheSoups) ;
21 print ("The $TheSoups array contains .$HowMany3 elements.<P>n");
22 ?> '
23 </BODY>
24 </HTML>
Будьте внимательны при добавлении элементов в массив напрямую. Правильно
это делается так: $Ar ray [] = "Add This"; ияи$Аггау[1] = "Add This";, ане
правильно вот так: $Аггау = " Add This";. Если вы забыли поставить скобки, то
добавленное значение уничтожит существующий массив, превратив его в простую
строку или число.
В РНР 4.0 есть несколько новых функций для работы с массивами. Не все они рас
смотрены в книге. Однако полная информация по этому вопросу содержится в ру
ководстве по языку РНР, которое можно найти на сайте РНР. Будьте внимательны
и не используйте новые функции, присущие только РНР 4.0, если на вашем серве
ре работает РНР 3.x.