PHP массивы для тех, кто не знает что это такое

Автор: Joshua Petrovich
Перевод: Полухин Владимир
Дата: 30.05.2004

http://wowan.ru

Иногда в 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";
            }
        }
    }
?>

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


Все вопросы, пожелания и лестные отзывы направлять на trolle@mail.ru.



Опубликовал admin
7 Июн, Понедельник 2004г.



Программирование для чайников.