TIGERCMS.com - документация, статьи и примеры по PHP. [Назад]

PHP массивы для тех, кто не знает что это такое[Печать]
Разместил: admin . Раздел: Для начинающих. Опубликовано: 09-20-2007 19:47:44
Иногда в PHP-сриптах нужно использовать много переменных. Часто это очень неудобно. Например, когда в программе используются однотипные данные. Для уменьшения количества переменных, и зачастую для упрощения их использования и улучшения читаемости кода можно использовать массивы.

Грубо говоря, массив - это переменная, в которой хранятся другие переменные. Представьте себе группу домов в городе. У каждого дома есть адрес. У каждой переменной тоже есть свой собственный адрес, который называют индексом.

Рассмотрим пример. Есть имена трёх человек (Вася, Петя и Ибрагим) сохранённые в переменных $sPerson1, $sPerson2, и $sPerson3 соответственно. Что будет, если мы поместим их все в массив?

<?php
$arrayPeople = array("Вася", "Петя", "Ибрагим");
?>


Теперь вместо того, чтобы использовать $sPerson1, $sPerson2, и $sPerson3, можно использовать массив $arrayPeople. Из примера видно, что для создания массива была применена функция array(). Следующий скрипт отображает имена.
<?php
$arrayPeople = array("Вася", "Петя", "Ибрагим");
print $arrayPeople[0];
print $arrayPeople[1];
print $arrayPeople[2];
?>


Обратите внимание, что индексы элементов массива начинаются с ноля, а не с единицы (как, например, в языке BASIC). Рассмотрим следующий пример вывода элементов массива с использованием цикла.

<?php
$arrayPeople = array("Вася", "Петя", "Ибрагим");
$nArraySize = count($arrayPeople);
for($index=0; $index < $nArraySize; $index++) // максимальный индекс всегда равен количеству элементов - 1,
// потому что индекс начинается с ноля.
{
print $arrayPeople[$index];
}
?>
В этом примере $index - это индекс (адрес) элемента, а $nArraySize - количество элементов в массиве. Функция count() возвращает количество элементов в массиве. Теперь блок вывода получился больше, чем в первом случае, но это только для маленьких массивов. При размере массива в сотню элементов преимущество использования циклов очевидно.

Помимо использования числовых индексов можно использовать строковые. Рассмотрим пример.

<?php
$SESSION = array(); // создаём пустой массив
$SESSION["username"] = $sUserName;
$SESSION["password"] = $sPassword;
$SESSION["accesslevel"] = $nLevel;
// и т.д.
?>

Так можно использовать слова в качестве индекса. Теперь намного проще понять, что в $SESSION["username"] содержится имя пользователя, чем при использовании $SESSION[0].

Перейдём к многомерным массивам.

Многомерные массивы представляют себе массивы, элементы которых в свою очередь тоже являются массивами. Например, информацию о книжном магазине, где продаётся фантастика, детские книги и журналы я храню в массивах.
<?php
$arrayFantast = array("Миры империума", "Машина времени", "Берсеркер");
$arrayKidBooks = array("Сказки", "Чипполино", "Буратино");
$arrayMagazines = array("Хакер", "Мурзилка", "За рулём");
?>

Теперь поместим все эти массивы в один.
<?php
$arrayFantast = array("Миры империума", "Машина времени", "Берсеркер");
$arrayKidBooks = array("Сказки", "Чипполино", "Буратино");
$arrayMagazines = array("Хакер", "Мурзилка", "За рулём");
?>
$arrayInventory = array();
$arrayInventory["arrayFantast"] = $arrayFantast; // аналогично индексу 0
$arrayInventory["arrayKidBooks"] = $arrayKidBooks; // аналогично индексу 1
$arrayInventory["arrayMagazines"] = $arrayMagazines; // аналогично индексу 2
?>

Теперь можно распечатать значения:
<?php
$nSizeInv = count($ArrayInventory);
for($indexInv=0; $indexInv < $nSizeInv; $indexInv++)
{
if($indexInv==0) // индекс 0 - фантастика
{
$arrayFantast = $ArrayInventory[$index];
$nSizeFantast = count($arrayFantast);
for($indexFan=0; $indexFan < $nSizeFantast; $indexFan++)
{
$sFantast = $arrayFantast[$indexFan];
print "Fantastika: $sFantast";
}
}
if($indexInv==1) // индекс 1 - детские книги
{
$arrayKidsBooks = $ArrayInventory[$index];
$nSizeKbooks = count($arrayKidsBooks);
for($indexKbook=0; $indexKbook < $nSizeKbooks; $indexKbook++)
{
$sKidsBook = $arrayKidsBooks[$indexKbook];
print "Kids book: $sKidsbook";
}
}
if($indexInv==2) // индекс 2 - журналы
{
$arrayMagazines = $ArrayInventory[$index];
$nSizeMags = count($arrayMagazines);
for($indexMags=0; $indexMags < $nSizeMags; $indexMags++)
{
$sMagazine = $arrayMagazines[$indexMags];
print "Magazine: $sMagazine";
}
}
}
?>

Теперь Вы можете использовать массивы для своих нужд.

При возникновении проблем с работоспособностью представленного кода, попробуйте удалить следующие строки:
$arrayFantast = $ArrayInventory[$index];
...
$arrayKidsBooks = $ArrayInventory[$index];
...
$arrayMagazines = $ArrayInventory[$index];
Автор: Полухин Владимир

Источник: www.wowan.ru
Источник: http://qdp.ru   Прочитана 1314 раз.