Поиск

Добавление элементов в массив

Если массив существует, в него можно добавлять дополнительные элементы. Это делается напрямую с помощью оператора присваивания (знак равенства) так же, как присвоение значения строке или числу. При этом можно не зада вать ключ добавленного элемента, но в любом случае при обращении к масси ву необходимы квадратные скобки. Добавляя два новых элемента к списку $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);
  1. Откройте файл soups.php в текстовом редакторе.
  2. После инициализации массива с помощью функции array ( ) добавьте сле дующую запись:
  3. $HowMany = count($Soups);
    print ("The array contains $HowMany elements.<P>\n");

    Функцией count ( ) будет определено, сколько элементов содержится в мас сиве $ Soups. Присвоив это значение переменной, его можно распечатать.

  4. Добавьте в массив три дополнительных элемента.
  5. $Soups["Thursday"] = "Chicken Noodle";
    $Soups["Friday"] = "Tomato";
    $Soups["Saturday"] = "Cream of Broccoli";
  6. Пересчитайте элементы в массиве и распечатайте это значение.
  7. $HowManyNow = count($Soups);
    print ("The array now contains $HowManyNow elements.<P>\n");
  8. Сохраните сценарий (листинг 7.2), загрузите его на сервер и протестируй те в браузере (рис.).

Листинг 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.

Объединение двух массивов

  1. Откройте файл soups.php в текстовом редакторе, если он еще не открыт.
  2. После инициализации массива $Soups сосчитайте его элементы и напеча тайте результат.
  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");
  4. Объедините два массива в один.
  5. $TheSoups = array_merge ($Soups, $Soups2);

    Проследите, чтобы массивы были расположены именно в этом порядке ($Soups, потом $Soups2), то есть элементы четверга и пятницы должны быть добавлены к элементам понедельника среды, а не наоборот.

  6. Сосчитайте элементы нового массива и напечатайте результат.
  7. $HowMany3 = count($TheSoups);
    print ("The $TheSoups array contains
    —$HowMany3 elements.<P>\n");
  8. Закройте РНР и HTMLдокумент.
  9. ?></BODYx/HTML>
  10. Сохраните файл (листинг 7.3), загрузите его на сервер и протестируйте в браузере (рис.).

Листинг 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.