Цикъл while
Циклите се включват в скрипта, когато е възникнала необходимост от многократно изпълнение на код. Цикълът while изпълнява съответния блок оператори до момента, до който зададеното условие е истина. При всяка итерация той проверява условието. Когато условието стане FALSE, цикълът се прекратява. Синтаксисът е следния:
инструкция/и;
}
- Отворете текстовия редактор и създайте нов документ. Дайте му наименование select.php.
- Задаваме текущата година с помощта на функцията date().
<?php $year = date ("Y"); echo date ("Y") . " ". "година"."</br>"; echo "Директорията, в която се намира файлът е:" ." ". htmlspecialchars($_SERVER["PHP_SELF"]); ?>
Функцията date("Y") ще върне текущата година. За променливата $_SERVER["PHP_SELF"] ще говорим по-нататък. - Ще създадем HTML форма, която ще съдържа падащо меню с месеците:
<form action= '<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>'> <p style="color: red;">Изберете месец:<p> <form action= '<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>' metod= "POST" name= "Month"> <select name="Month"> <option value="Select month">Изберете месец</option>\n <option value="January">Януари</option>\n> <option value="February">Февруари</option>\n> <option value="March">Март</option>\n> <option value="April">Април</option>\n> <option value="May">Май</option>\n> <option value="June">Юни</option>\n> <option value="July">Юли</option>\n> <option value="August">Август</option>\n> <option value="September">Септември</option>\n> <option value="October">Октомври</option>\n> <option value="November">Ноември</option>\n> <option value="December">Декември</option>\n> </select> </form>
- С помощта на цикъла while ще създадем падащо меню с дните.
<p style="color: red;">Изберете ден:<p> <form action= '<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>' metod="POST" name="Day"> <select name=”Day”> <option value="Day">Изберете ден</option>\n> <?php $day = 1; while($day <= 31) { echo '<option value='.$day.'>'.$day.'</option>'; $day++; } ?> </select> </form>
Задаваме на променливата $day стойност 1. Това трябва да се направи преди началото на цикъла. След това автоманично ще се направи проверка дали променливата $day е равна на 31 или не е. Ако е така, стойността на променливата $day ще се напечата като опция в менюто на дните, а след това стойността й ще се увеличи с 1. Този процес ще продължава, докато стойността не стане 32. В този момент цикълът ще прекрати и ще започне изпълнението на следващата инструкция (ако има такава). - С помощта на друг цикъл while ще създадем падащо меню с годините.
<p style="color: red;">Изберете година:<p> <form action= '<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>' metod="POST" name="Years"> <select name=”Years> <option value="Year">Изберете година</option>\n> <?php $EndYear = $year + 10; while($year <= $EndYear) { echo '<option value='.$year.'>'.$year.'</option>'; $year++; } ?> </select> </form>
В падащото меню ще се генерират текущата година и следващите десет години, защото $EndYear = $year + 10;. - Желателно е да създадете бутон Submit.
</br><input type=submit name=Submit value = "Напред!"> </form> </body> </html>
- Съхранете файла, качете го на сървъра и тествайте в браузъра.
<!Doctype html> <html> <head> <title>Меню Select</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body>

Какво представлява променливата $_SERVER["PHP_SELF"]?
$_SERVER["PHP_SELF"] е променлива, която връща като стойност името и мястото от където се изпълнява текущия файл (от root папката на документите). Тази променлива може да бъде използвана от хакерите. Те могат да поставят наклонена черта в адресното поле на браузъра и да вмъкнат някакъв изпълним код.
Например:
Тогава в браузъра ще видите:

Функциите htmlentities() и htmlspecialchars() конвертират всички знаци в HTML.

Скриптът не се изпълнява. Обикновено сървърите са настроени автоматично да правят това конвертиране, но защо да поемаме този риск.
Може и така:
<!--select1.html --> <!Doctype html> <html> <head> <title>Меню Select</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <form action= 'select1_handle.php' method='post'> <fieldset style="width:200px;"> <legend >Изберете:</legend> <p style='color: red;'>Изберете месец:<p> <select name='Month'> <option value='' selected="selected"></option>\n <option value='Януари'>Януари</option>\n> <option value='Февруари'>Февруари</option>\n> <option value='Март'>Март</option>\n> <option value='Април'>Април</option>\n> <option value='Май'>Май</option>\n> <option value='Юни'>Юни</option>\n> <option value='Юли'>Юли</option>\n> <option value='Август'>Август</option>\n> <option value='Септември'>Септември</option>\n> <option value='Октомври'>Октомври</option>\n> <option value='Ноември'>Ноември</option>\n> <option value='Декември'>Декември</option>\n> </select> <p style='color: red;'>Изберете ден:<p> <input type="number" name="day" min="1" max="31"> <p style='color: red;'>Изберете година:<p> <input type="number" name="year" min="2016" max="2026"> </fieldset> </br><input type=submit name=submit value = "Продължи" style="margin-right:20px;margin-left:5px;"> <button type="reset" value="reset">Изчисти</button> </form> </body> </html>
<!--select1_handle.php--> <!Doctype html> <html> <head> <title>Меню Select</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php //Обработва данните от select1.html if(isset($_POST["submit"], $_POST["Month"], $_POST["day"], $_POST["year"])){ $Month= $_POST["Month"]; $day= $_POST["day"]; $year= $_POST["year"]; echo "Избраният месец е:" . " " . $Month . "<br>"; echo "Избраният ден е:" . " " . $day . "<br>"; echo "Избраната година е:" . " " . $year . "<br><br>"; } ?> </body> </html>


Цикъл do … while
Цикълът do … while е подобен на цикъла while, като разликата е, че при do … while условието се проверява след първата итерация, а при while- в началото на първата итерация.
Синтаксисът е:
инструкция/инструкции;
}
while (условие);
Цикъл for
Цикълът for е предназначен за изпълнение на блок от инструкции определен брой пъти (за разлика от while, който се изпълнява докато условието стане FALSE). За да се осъществи това, в цикъла се използват специални променливи (броячи на цикъла).
Синтаксисът на цикъла for е следния:
блок от команди на цикъла;
}
При инициализация на цикъла, началната стойност ще се изпълни веднъж. След това се проверява условието (в началото на всяка итерация) и, ако то е истина, цикълът продължава изпълнението на командите, вложени в него, ако условието е лъжа, изпълнението на цикъла се прекратява. Крайният израз (нарича се още брояч на цикъла), се изпълнява всеки път, когато условието бъде определено като истина. но само след обработка на всички инструкции от блока на цикъла. Ако условие липсва, тогава цикълът ще се изпълнява безкрайно и при необходимост може да се прекрати с командата break (може да се използва за прекъсване на циклите for, foreach, while, do-while или switch).
Например:
<?php for ($day = 1; $day <= 31; $day++) { echo '<option value='.$day.'>'.$day.'</option>'; $day=$day + 1; } ?>
В началото се присвоява стойност на променливата $day=1. След това се задава условието ($day <= 31). Ако върната стойност е истина, се изпълнява инструкцията echo и стойността на променливата $day се увеличава с 1. В края на всяка итерация стойността на променливата $day се увеличава с отново с 1. Можете да си създадете .php файл, който да съдържа горенаписания скрипт. След изпълнението на скрипта, в браузъра ще видите:

Най-разпространеният пример за цикъла for е да се изпечатат всички прости числа (които се делят само на себе си и на 1) от 1 до n (Решето на Ератостен).
Доказано е, че простите числа за пръв път са изучавани задълбочено от древните гърци (например Евклид). Гъркът Ератостен е създал метод за намиране на всички прости числа по-малки от дадено положително число. Неговият изненадващо ефикасен метод е много добър старт за по-нататъшното развитие на теорията на числата. При своя метод (Решето на Ератостен) той започва като написва всички числа от 2 до зададеното число. След това той зачерква всички числа, делящи се на 2, след това тези делящи се на 3 и така нататък докато зачеркне всички възможни числа. Няма да му отнеме време да зачерква числата делящи се на 4, защото те се делят и на 2. С други думи той зачерква само числата делящи се на тези прости числа, които не са по-големи от квадратен корен от числото посочено като горна граница на търсенето. Например за да намери простите числа по-малки от 100 той би зачеркнал само тези, които се делят на прости числа по-малки от 10 (квадратен корен от 100). Тогава незачеркнатите числа са прости числа.
- Създайте нов документ в текстовия редактор. Дайте му наименование prime_numbers.php.
- Въведете:
<!Doctype html> <html> <head> <title>Цикълът For</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php ?> </body> </html>
- Дайте начало на цикъла for:
for ($х = 2; $x <= 100; $x++) {Първоначално задаваме стойност 1 на променливата $x. След това проверяваме стойността на променливата дали е по-малка или равна на 100. С други думи, цикълът се изпълнява 100 пъти. Ако условието е истина, се изпълняват командите в блока и стойността на променливата $x се увеличава с 1. Процесът на проверка започва отново.
Кои са блоковите инструкции, т.е. какво съдържа тялото на цикъла?if ( ($x == 2) OR ($x == 3) OR ($x == 5) OR ($x == 7 ) ) { echo "$x</br>"; } elseif (($x % 2 != 0) AND ($x % 3 != 0) AND ($x % 5 != 0) AND ($x % 7 != 0)) { echo "$x</br>" ; } }
Както вече казахме, прости са тези числа, които се делят единствено и само на себе си и на 1. Тогава, ако разделим това число на някое друго число, то винаги операцията деление ще се извършва с остатък. 4 не е просто число, защото се дели на 2 без остатък. 7 е просто число, защото се дели на 2, 3, 4 с остатък. Всички знаем, че 2, 3, 5 и 7 са прости числа, поради което, ако стойността на променливата $x е равна на едно от тях, тя ще се изведе веднага на екрана. Използваме оператора OR, така че, ако едно от условията е вярно, стойността на променливата ще се изведе на екрана.
Ако стойността на променливата не е 2, 3, 5 или 7, за да определим дали числото е просто, трябва да го проверим. Делим числото на 2, 3, 5 и 7 и проверяваме дали има остатък от деленето. За да извършим това, ни е необходим оператора остатък от целочислено деление (%). Ако след извършване на операцията деление на променливата $x с 2,3, 5 и 7, остатъкът не е 0, то пред нас най-вероятно стои просто число, чиято стойност се извежда на екрана. Тук оператора, с който работим е AND, т.е. необходимо е и при трите деления остатъкът да е число, различно от 0, в противен случай числото не е просто.
- Съхранете файла, качете го на сървъра и тествайте в браузъра.

Цикъл foreach
Цикълът foreach работи само с масиви и обекти (след PHP5).
Синтаксисът му е:
foreach ($array as $value){ инструкция/инструкции }или
foreach ($array as $key => $value){ инструкция/инструкции }
Как работи цикълът?
Взема елемент от масива $array и съхранява стойността му в променливата $value, при което вътрешния указател на масива се придвижва напред с една позиция, за да може при следващата итерация да се вземе следващия елемент, изпълнява се инструкцията/те и следва нова итерация.
При втория начин на изписване, се взема ключа на променливата и той се присвоява на променливата $key.
|
Няма коментари:
Публикуване на коментар