vvz.nw.ru К занятиям по PHP

<< Массивы

В PHP можно определять т.н. ассоциативные массивы, представляющие собой наборы пар ключ - значение. В отличие от многих других языков, где "ключами" (индексами) могут быть только целые неотрицательные числа, в PHP ключ может быть строкой (а может - и целым неотрицательным числом).

Объявление массива без инициализации

$data = array();

Объявление массива с инициализацией

Пусть, например, мы хотим хранить в ассоциативном массиве $textOptions некие параметры шрифта, а в массиве $days с целочисленными ключами - названия дней недели. Их можно объявить с инициализацией ряда элементов, а потом при необходимости добавлять новые элементы.

$textOptions = array( 'font-family'=>'Arial' , 'color'=>'red' , 'font-size'=>12 );

$days = array( 0=>'Monday' , 1=>'Tuesday');
или
$days = array( 'Monday','Tuesday');

Добавление элементов в массив

В определенные выше массивы можно добавлять элементы:

$textOptions['background-color'] = '#EEEEEE';
$textOptions['border'] = 'green dotted 3px';

$days[2] = 'Wednesday';
$days[3] = 'Thursday';

В случае массива с целочисленными ключами ключи можно не указывать:

$days[] = 'Friday';
$days[] = 'Suturday';
$days[] = 'Sunday';

При этом значения ключам присваиваются последовательно, начиная со значения, на единицу большего уже существующего максимального ключа.

Примеры и примечания

Для перебора всех элементов массива очень удобно использовать оператор foreach. Определим такие (кстати, многомерные) массивы:

$student['Mitina'] = array('name'=>"Maria", 'age'=>19);
$student['Borisova'] = array('name'=>"Alexandra", 'age'=>19);
$teacher['Zakharkina'] = array('name'=>"vvz", 'age'=>'NA');
$teacher['Pankratov'] = array('name'=>"pan", 'age'=>'NA');

и выведем значения с помощью операторов


 foreach ( $student as $k=>$v )
 {
   echo "<b>$k</b><br>";
   echo $v['name']." (".$v['age']." years)<p>";
 };

Вот результат:

Mitina
Maria (19 years)

Borisova
Alexandra (19 years)



Применять для вывода всего массива оператор "echo" бессмысленно, ибо выводится строка "Array". Выводить можно конкретный элемент массива:

операторы PHP результат
echo $student['Mitina']; Array
echo $student['Mitina']['name']; Maria
foreach ( $student['Mitina'] as $k=>$v )
{
  echo "$k : $v<br>";
};
name : Maria
age : 19





Попробуем присвоить $student["Mitina"] = $student["Borisova"]; и вывести результат:
echo $student["Mitina"]["name"]
:
Alexandra



И присваивание $student["Mitina"] = $teacher["Zakharkina"]; работает. Собственно, почему бы и нет?
Вот результат вывода echo $student["Mitina"]["name"]; :
vvz



А если применить оператор присваивания не к элементу массива, а ко всему массиву? Например, попробуем так:
$student = $teacher;
и выведем результат: echo $student["Zakharkina"]["age"];
NA



vvz.nw.ru  > PHP