• strict warning: Non-static method view::load() should not be called statically in /var/www/codeacademy/sites/all/modules/views/views.module on line 1113.
  • strict warning: Declaration of views_handler_field::query() should be compatible with views_handler::query($group_by = false) in /var/www/codeacademy/sites/all/modules/views/handlers/views_handler_field.inc on line 0.
  • strict warning: Declaration of content_handler_field::element_type() should be compatible with views_handler_field::element_type($none_supported = false, $default_empty = false, $inline = false) in /var/www/codeacademy/sites/all/modules/cck/includes/views/handlers/content_handler_field.inc on line 0.
  • strict warning: Declaration of views_handler_sort::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /var/www/codeacademy/sites/all/modules/views/handlers/views_handler_sort.inc on line 0.
  • strict warning: Declaration of views_handler_sort::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /var/www/codeacademy/sites/all/modules/views/handlers/views_handler_sort.inc on line 0.
  • strict warning: Declaration of views_handler_sort::query() should be compatible with views_handler::query($group_by = false) in /var/www/codeacademy/sites/all/modules/views/handlers/views_handler_sort.inc on line 0.
  • strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /var/www/codeacademy/sites/all/modules/views/handlers/views_handler_filter.inc on line 0.
  • strict warning: Declaration of views_handler_filter::query() should be compatible with views_handler::query($group_by = false) in /var/www/codeacademy/sites/all/modules/views/handlers/views_handler_filter.inc on line 0.
  • strict warning: Declaration of views_plugin_query::options_submit() should be compatible with views_plugin::options_submit($form, &$form_state) in /var/www/codeacademy/sites/all/modules/views/plugins/views_plugin_query.inc on line 0.
  • strict warning: Declaration of views_plugin_style_default::options() should be compatible with views_object::options() in /var/www/codeacademy/sites/all/modules/views/plugins/views_plugin_style_default.inc on line 0.
  • strict warning: Declaration of views_plugin_row::options_validate() should be compatible with views_plugin::options_validate(&$form, &$form_state) in /var/www/codeacademy/sites/all/modules/views/plugins/views_plugin_row.inc on line 0.

Краткое введение в массивы 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 )

Полный пример скрипта вывода учеников:

Ну и традиционно в конце каждой статьи - экспериментируй, задавай вопросы, развивайся!