3. Увод
Най-просто казано, масивите са "контейнери" от
променливи - поредица от елементи, всеки, от които
има свой маркер (наименование), чрез който би
могъл да бъде извикан.
Масивите са изключително полезни, когато
обработвате повече и по-разноообразна
информация.
Приложението им може да е доста разнообразно, но
те са и едно от основните неща, на които ще
разчитате, когато работите с бази данни.
Тогава всички данни от един ред от таблицата в базата ще
бъдат получавани в масив, който ще трябва да обработим,
за да достигнем точно до тази информация, която ни трябва.
Използването на масиви дава възможност да
направите кода си по-ясен, стегнат и четлив.
4. 1. Създаване на масиви
Приложение, в което се използват имената на
градове в България и техните пощенски кодове.
Част от списъка, с който разполагаме:
Айтос - 8500
Асеновград - 4230
Балчик - 9600
Ботевград - 2140
Бургас - 8000
Варна - 9000
В. Търново - 5000
5. Пример
<?php
$gradove[]='Айтос';
$gradove[]='Асеновград';
$gradove[]='Балчик';
$gradove[]='Ботевград';
$gradove[]='Бургас';
$gradove[]='Варна';
$gradove[]='В. Търново';
?>
съставени от отделни единици
информация всяка, от която има своя
идентификатор (индекс, ключ) ;
Разликата в изписването на масивите и
променливите е в квадратните скоби, в
които се указва с коя точно стойност
желаем да работим;
този идентификатор записваме в
скобите, когато желаем да добавим,
променим, прочетем или изтрием нещо.
Ако пропуснем идентификтора и не
запишем нищо в скобите, то PHP
интерпретаторът ще трябва сам да
прецени какво да направи.
6. Пример (2)
Смяна на един град с друг
<?php
$gradove[4]='Благоевград';
?>
../uroci/t7/ ex71.php
<?php
$gradove = array
("Айтос", "Асеновград",
"Балчик", "Ботевград",
"Бургас", "Варна", "В.
Търново");
echo "$gradove[4]";
?>
Промяна на началото на
индексацията
<?php
$gradove = array (1 =>
"Айтос", "Асеновград",
"Балчик", "Ботевград",
"Бургас", "Варна", "В.
Търново");
echo "$gradove[4]";
?>
7. 2. Обхождане на масиви
Едно от най-ценните свойства на
масивите;
Mоже да получите достъп до всеки
елемент от масива последователно в
рамките на цикъл;
Единият вариант да направите това е чрез
for цикъл:
трябва да знаете от къде започва
индексирането на масива и колко елемента
има в него.
Броя на елементите може да научите с
помощта на функцията count ().
8. Пример
../uroci/t7/ ex72.php
<?php
//създаваме масива
$gradove = array ("Айтос", "Асеновград", "Балчик", "Ботевград", "Бургас", "Варна", "В.
Търново");
//започваме падащото меню
echo "Моля, изберете град : <br><select name='grad'>";
//преброяваме масива
$kolko=count ($gradove);
//създаваме цикъла за обхождане на масива и опциите на падащото меню
for ($i=0; $i<$kolko; $i++) {
echo "<option value=$i>$gradove[$i]</option>";
}
//завършваме падащото меню
echo "</select>";
?>
9. Пример (2)
../uroci/t7/ ex73.php
<?php
//създаваме масива
$gradove = array ("Айтос", "Асеновград", "Балчик", "Ботевград",
"Бургас", "Варна", "В. Търново");
//започваме падащото меню
echo "Моля, изберете град --- с list ($key, $value) и each (
$gradove): <br><select name='grad'>";
while (list ($key, $value) = each ($gradove)) {
echo "<option value=$key >$value</option>";
}
//завършваме падащото меню
echo "</select>";
?>
10. Пример (2)_2
Функцията each () се грижи за изместването на
активния елемент, конструкцията задава на
променливата $key името на елемента, а на
променливата $value - стойността му.
PHP предоставя доста голяма свобода на
движението, позволявайки да се движите напред
(да прескачате елементи) или назад (да се
връщате към вече обработени).
За целта се използват съответно функциите next () и
prev (),
а за да навигирате свободно из масива можете да
използвате array_walk ().
11. 3. Индексиране с низове
На основата на $gradove[] ще направим друг масив, в
който ще се съдържат пощенските кодове на
съответните градове.
Кодовете ще представляват същинската информация,
а имената на градовете ще са ключовете.
За тази цел ще използваме "стрелка" (=>). Но в този
случай преди всяка стойност ще укажем изрично ключа,
който искаме да й съответства. Ето как би могло да
стане това :
<?php
$kodove = array ("Айтос" => "8500", "Асеновград" => "4230",
"Балчик" => "9600", "Ботевград" => "2140", "Бургас" => "8000",
"Варна" => "9000", "В. Търново" => "5000");
?>