Указанный фрагмент покажет на экране, естественно, слово Osco. Обратите внимание на то, что у нас нет объявления массива как такового - как и в случае с обычными переменными, мы создаем переменную в момент присваивания ей некоторого значения. Отличие от обычных переменных (не массивов) в том, что после имени переменной мы пишем индекс (номер) элемента в нашем массиве.
При добавлении в массив новых элементов индекс нового элемента можно в принципе не писать - новому элементу автоматически присвоится очередной номер:
<?
$a[]="Igor";
$a[]="Osco";
$a[]="Otto";
?>
В указанном фрагменте значение "Igor" запишется в $a[0], "Osco" запишется в $a[1] и "Otto" запишется в $a[2]. Как видно из приведенного примера, если мы не будем указывать значения для индекса, то для него будет браться предыдущий оспользованный индекс, увеличенный на 1. Так как у нас сначала вообще ни одного индекса не было, то первый получает значение 0, следующий - увеличивается на 1 и т. д. Вот еще поясняющий пример:
Здесь элемент со значением "Otto" получает номер 2223 (2222+1). Указанный форагмент выведет в браузер слово "Otto".
Для массивов в качестве индексов вместо чисел могут использоваться и строки. Часто это оказывается удобным. Такие массивы называются ассоциативными. Вот пример для дней недели:
Приведенный фрагмент покажет в браузере 6 (т. е. значение для индекса "fri").
Для создания массивов можно применять функцию array. Вот два примера (для массива с числовым индексом м для ассоциативного массива):
<?
$b=array("Igor", "Osco", "Otto");
?>
<?
$c=array("mon"=>1, "thu"=>2, "wed"=>3);
?>
И, наконец, поговорим о многомерных массивах. Здесь все аналогично массивам одномерным. Вот так, например, мы можем задать несколько элементов двумерного массива:
$n[1][1]=12;
$n[1][2]=-4;
$n[2][1]=7;
$n[2][2]=0;
Для задания многомерных массивов мы можем воспользоваться и функцией array. Вот пример:
$k=array(array(1, -41), array(3, 10));
Здесь создается двумерный массив с элементами от $k[0][0] до $k[1][1] соответственно. Из последнего примера особенно ясно видно, что многомерные массивы интерпретируются как массивы массивов.
Основной оператор ветвления - это if. С ним все более-менее ясно - никаких принципиальных отличий от других языков нет. Вот сразу пример:
if ($k==12){
echo "Данные равны 12<br>";
}
else{
echo "Данные не равны 12<br>";
}
Если k равно 12, то покажеться одна надпись, а если не равно, то другая. Веточку else можно не писать, если в ней нет необходимости. Условие (проверку), как и в других C-подобных языках, надо писать в круглых скобках. Слово else, естественно, не пишем. Еще раз, кстати, обратите внимание, что для логического равно (т. е. для ответа на вопрос, равно ли что-то чему-то) используется два знака равно "==".
Если идет несколько проверок подряд, то можно использовать конструкцию с elseif:
if ($k>0){
echo "Число положительное<br>";
}
elseif($k<0){
echo "Число отрицательное<br>";
}
else{
echo "Число равно нулю<br>";
}
Если количество возможных ветвлений велико (программа должна идти или сюда, или сюда, или туда...) и возможные значения для проверяемого выражения представляют из себя конкретные значения (а не условия типа меньше или больше), то лучше использовать switch. Вот пример:
switch($note){
case 1:
case 2:
echo "Двоечник<br>";
break;
case 3:
echo "Троечник<br>";
break;
case 4:
echo "Четверочник<br>";
break;
case 5:
echo "Отличник<br>";
break;
default:
echo "Ошибка!<br>";
}
Обратите внимание, что в конце группы операторов, как правило, надо ставить break, иначе операторы, написанные в последующем case, тоже будут выполняться (у нас это видно для значений 1 и 2 - в обоих этих случаях в браузер выведется "Двоечник"). Если ни одна из проверок не увенчается успехом, то выполнится часть break.
Данный пример считает произведение чисел от 1 до 10 (т. н. факториал) и выводит результат в браузер.
По задаче часто нужны циклы, про которые заранее не известно, сколько раз они дожны выполнится. В этом случае используем циклы while. У них две разновидности - do-while и while. Сначала рассмотрим цикл do-while. Вот пример его использования для той же задачи нахождения факториала числа: