Управляющие конструкции php: elseif и for
Сегодня на примере программы обработчика для урока Флажки checkbox и свойства таблицы colspan и rowspan рассмотрим управляющие конструкции php, а именно условные операторы elseif, и оператор цикла for.
Сначала немного теории:Оператор if позволяет выполнять фрагменты кода в зависимости от условия. Структуру оператора if можно представить следующим образом:
оператор используется для выполнения блока кода, когда выполняется условие (true). В противном случае блок кода игнорируется. Если блок кода содержит несколько команд, то он должен быть заключен в фигурные скобки { }.
Оператор else расширяет if на случай, когда условие выполняется (true), или для выполнения другого блока кода, когда условие не выполняется (false).
Структура оператора if else следующая:
Еще один способ расширения условного оператора if – использование оператора elseif. elseif – это комбинация else и if.
Оператор расширяет оператор if, чтобы выполнялся другой оператор в случае, если исходное выражение if оценивается как FALSE.
В отличие от else он будет выполнять альтернативное выражение, только если условное выражение elseif оценивается как TRUE.
Структуру оператора if, расширенного с помощью операторов else и elseif, можно представить следующим образом:
Операторов elseif может быть несколько в одном if блоке. Elseif утверждение будет выполнено, только если предшествующее if условие является False, все предшествующие elseif условия являются False, а данное elseif условие – True.
Оператор цикла for это конструкция, позволяющая выполнять повторяющиеся действия в зависимости
от условия.
Структура оператора for:
Первое выражение1 вычисляется один раз в начале цикла. В начале каждой итерации вычисляется выражение2. Если оно является True, то цикл продолжается и выполняются все команды блока выполнения. Если выражение2 вычисляется как False, то исполнение цикла останавливается. В конце каждой итерации (т.е. после выполнения всех команд блока выполнения) вычисляется выражение3.
Каждое из выражений 1, 2, 3 может быть пустым. Если выражение2 является пустым, то это значит,
что цикл должен выполняться неопределенное время (в этом случае PHP считает это выражение всегда
истинным), а цикл можно останновить, используя оператор break.
В третье выражение конструкции for можно записывать через запятую сразу несколько
простейших команд.
Можно опустить все три выражения. Тогда просто не будет задано начальное значение счетчика и оно не будет изменяться каждый раз в конце цикла. Все эти действия можно записать в виде отдельных команд либо в блоке выполнения, либо перед циклом.
Взгляните на код программы обработчика. Она состоит из уже знакомых вам конструкций <<<HERE HERE; , которые были рассмотрены в посте Конструкция <<<HERE HERE; и вывод кода HTML в PHP, нескольких условных операторов elseif и оператора цикла for.
Сначала в перменную $tr2 с помощью конструкции <<<HERE HERE; , я заношу HTML код второй строки таблицы, которая остается неизменной при исследовании свойства colspan.
</td>
</tr>
<tr>
<td height='50' width='100' bgcolor='#336699' valign='bottom'> <center>2x1</center>
</td>
<td width='100' bgcolor='#FFCC33'> <center>2x2</center>
</td>
<td width='100' bgcolor='#336699' valign='bottom'> <center>2x3</center> </td>
</td>
</tr>
</table>
HERE;
Затем с помощью условного оператора if else проверяю для какого свойства colspan или rowspan необходимо проводить проверку.
Если выбрано свойство colspan, тогда с помощью нескольких условных операторов elseif и составного
условия я проверяю какие ячейки таблицы были выбраны для объединения, и в зависимости от выбора вывожу с помощью конструкции <<<HERE HERE; ,
if ($val[1] == "" && $val[2] != "" && $val[3] != ""){
print <<<HERE
<table>
<tr>
<td height="50" width="100" bgcolor="#FFCC33" valign="top" > <center>1x1</center>
</td>
<td width="100" bgcolor="#336699" colspan="2"> <center>1x2</center>
$tr2
HERE;
}
else if ($val[1] != "" && $val[2] != "" && $val[3] == ""){
print <<<HERE
<table>
<tr>
<td height="50" width="100" bgcolor="#FFCC33" valign="top" colspan="2"> <center>1x1</center>
</td>
<td width="100" bgcolor="#336699"> <center>1x2</center>
$tr2
HERE;
}
else if ($val[1] != "" && $val[2] != "" && $val[3] != ""){
print <<<HERE
<table>
<tr>
<td height="50" width="100" bgcolor="#FFCC33" valign="top" colspan="3"> <center>1x1</center>
$tr2
HERE;
}
else {
print <<<HERE
<table>
<tr>
<td height="50" width="100" bgcolor="#FFCC33" valign="top" > <center>1x1</center>
</td>
<td width="100" bgcolor="#336699"> <center>1x2</center>
</td>
<td width="100" bgcolor="#FFCC33" valign="top"> <center>1x3</center>
$tr2
HERE;
}
}//Заканчиваем исследование свойства colspan
Если же было выбрано свойство rowspan, то формирую массив ячеек таблицы $td[ ], состоящий из шести элементов (по количеству ячеек в таблице). Затем с помощью простого оператора if проверяю какие столбцы были выбраны для исследования и переопределяю необходимые элементы массива ячеек таблицы $td[ ]. И наконец с помощью операторов echo и оператора цикла for, вывожу поочередно строки таблицы.в которой содержится HTML код первой строки таблицы и переменную $tr2, в которой содержится вторая строка.
$td[1] = "<td height='50' width='100' bgcolor='#FFCC33' valign='top' > <center>1x1</center></td>";
$td[2] = "<td height='50' width='100' bgcolor='#336699' > <center>1x2</center></td>";
$td[3] = "<td height='50' width='100' bgcolor='#FFCC33' valign='top' > <center>1x3</center></td>";
$td[4] = "<td height='50' width='100' bgcolor='#336699' valign='bottom' > <center>2x1</center></td>";
$td[5] = "<td height='50' width='100' bgcolor='#FFCC33' > <center>2x2</center></td>";
$td[6] = "<td height='50' width='100' bgcolor='#336699' valign='bottom' > <center>2x3</center></td>";
//Переопределяем значения ячеек если отмечены
if ($val[1] != ""){
$td[1] = "<td height='50' width='100' bgcolor='#FFCC33' valign='top' rowspan='2' > <center>1x1</center></td>";
$td[4] = "";
}
if ($val[2] != ""){
$td[2] = "<td height='50' width='100' bgcolor='#336699' rowspan='2'> <center>1x2</center></td>";
$td[5] = "";
}
if ($val[3] != ""){
$td[3] = "<td height='50' width='100' bgcolor='#FFCC33' valign='top' rowspan='2'> <center>1x3</center></td>";
$td[6] = "";
}
echo "<table height='100'><tr>";
for ($i = 1; $i < 4; $i++){
echo $td[$i];
}
echo "</tr><tr>";
for ($i = 4; $i < 7; $i++){
echo $td[$i];
}
echo "</tr></table> ";
}
Вот так несмотря на кажущиеся внушительные размеры кода, при ближайшем рассмотрении он оказывается простым и прозрачным.
Автор: Сергей Зарубин
Дата: 2011-05-23
Колличество просмотров: 5060
|
Нравится |
Комментарии к заметке:
Добавить новый комментарий