Краткое введение в массивы PHP
Еще одно важнейшее понятие в программировании, которое используется во всех языках - это массив.
Массив - от французского «massif» - это такая совокупность элементов, которые объединены в единое целое. Массивы бывают одномерными и многомерными, числовыми и ассоциативными, с ограниченной длиной и без нее, могут содержать строки, числа и объекты, о которых я буду рассказывать в следующих статьях.
Посмотрите на полку книг, книги расставлены друг за другом, если кто-то из ваших домашних попросит дать ему третью книгу слева, вы без всякого замедления найдете и достанете нужную ему книгу.
В этом случае ключом будет номер 3, а значением сама книга ( список ). Однако в качестве ключа массива может выступать не только число, но и стока ( ассоциативный массив ).
Например нам нам необходимо найти книгу «Капитанская дочка», но конкретная позиция на полке нам не известна. В этом случае нам понадобится чуть больше времени для поиска, но в результате нужная кнжика будет найдена по ассоциации ( метке "Капитанская дочка" ).
Подытожим:
- список ( list ) это массив значений, имеющих порядковый цифровой ключ (внимание, первый элемент находится под номером 0, а не 1! ):
$puplis_list = array('Вася','Петя','Катя','Таня'); echo $puplis_list[0]; // Вася
- ассоциативный массив - это массив который может иметь стоковые ключи:
$class_info = array( 'nomer_classa'=>'10б', 'kolichestvo_uchenikov'=>30, 'class_ruk'=>'Galina Ivanovna' ); echo $class_info['class_ruk']; // Галина Ивановна
По мере выполнения программы, содержимое массива можно изменять, например:
// Вася стал плохо учиться, перебросим его в конец журнала $puplis_list[0] = 'Таня'; $pupis_list[3] = 'Вася';
или так
// Галина Ивановна заболела, $class_info['class_ruk'] = 'Татьяна Петровна';
Тем самым мы заменили значение элемента массива на другое значение, не меняя его ключ
ключ - class_ruk,
значение - 'Татьяна Петровна'
В PHP элементами одного массива могут являться как числа, так и строки, массивы и объекты.
Многомерные массивы (массивы внутри массивов)
В реальных программах массивы данных могут содержать другие массивы, например:
$pupils = array( "class1" => array('Иванов', 'Петров', 'Сидоров'), "class2" => array('Гусев', 'Бобров', 'Козлов'), "class3" => array('Смирнов', 'Медведев', 'Василев') );
В примере выше мы имеем массив состоящий из трех классов и лучших учеников. Теперь давайте выведем их на экран как часть HTML странички:
foreach($pupils as $className => $pupilsArr) { $output .= " <h2>$className</h2> <div>Лучшие ученики: $pupilsArr[0], $pupilsArr[1], $pupilsArr[2]</div>"; } echo $output;
Просьба не пугаться оператору foreach, ведь мы его еще не рассматривали. На самом деле здесь все очень просто - с помощью циклового оператора foreach мы проходимся по каждому элементу массива $pupils и для каждой итерации заполняем переменные $className и $pupilsArr (foreach делает это за нас), которые в дальнейшем используем для построения HTML стоки в переменной $output.
Теперь скомбинировав все вместе в скрипт под названием pupils.php и запустив его через браузер (для этого тебе нужно настроить среду разработки) мы увидим список классов и лучших учеников!
Конечно приведенный код можно было бы немножко оптимизировать, поскольку сейчас мы полагаемся на факт что лучших учеников будет именно 3 в каждом классе, однако вероятно в реальности количество лучших может варьироваться. Если кто-то заинтересуется вопросом оптимизации данного простого скрипта, можем провести дискуссию в комментариях! ( подсказка foreach внутри foreach )
Полный пример скрипта вывода учеников:
Ну и традиционно в конце каждой статьи - экспериментируй, задавай вопросы, развивайся!