Similar presentations:
Операторы циклов. Массивы в PHP. Функции
1.
ОПЕРАТОРЫ ЦИКЛОВ.МАССИВЫ В PHP.
Функции
LECT. UNIV. NATALIA PLEŞCA
2.
СОДЕРЖАНИЕСтруктура While и do...While
Структура FOR и FOREACH
Массивы в PHP
Функции определенные
программистом
3.
ОПЕРАТОРЫ ЦИКЛОВ PHPИспользуются для многократного выполнения одной или
более команд /структур
В PHP можно использовать несколько цикличных
операторов:
◦ while - повторяет блок кодов до тех пор, пока условие
является истинной. Условие проверяется на входе в цикл
◦ do...while - выполняет и повторяет блок кодов до тех пор,
пока условие истинно. Условие проверяется на выходе из
цикла
◦ for - выполняет блок кодов определенное количество раз
◦ foreach - выполняет блок кодов, необходимых для
прохождения элементов массива
4.
ЦИКЛ „WHILE” и „DO…WHILE”While выполняет блок скриптов до тех пор пока условие
истинно
Синтаксис:
while (условие) {
код который будет выполнятся;
}
Do..While – выполнит минимум один раз блок со скриптами,
а потом проверит выполнение условия и выполнит блок
столько раз пока условие не станет ложью
Синтаксис:
do {
код который будет выполнятся;
} while (условие);
5.
ПРИМЕР ИСПОЛЬЗОВАНИЯWHILE
<?php
$i = 0;
$num = 50;
while( $i < 10)
{
$num--;
$i++;
}
echo ("<br />Цикл закончился на итерации i = $i и значение
переменной num = $num" );
?>
Цикл закончился на итерации i = 10 и значение переменной num = 40
6.
ПРИМЕР ИСПОЛЬЗОВАНИЯDO…WHILE
<?php
$i = 0;
$num = 0;
do{
$num += 5;
$i++;
}
while( $i < 10 );
echo ("<br />Цикл закончился на значении i = $i, и
переменная num ровна $num" );
?>
Цикл закончился на значении i = 10, и переменная num ровна 50
7.
ЦИКЛ „FOR”Структура For используется тогда когда точно известно
сколько раз итеративно выполнится блок скриптов
Синтаксис:
for (инициирование счетчика цикла; значение счетчика для
выхода из цикла; инкрементирование счетчика) {
код необходимый для выполнения;
}
Пример:
<?php
$a = 0;
$b = 0;
for( $i=0; $i<=5; $i++ )
{
$a += 10;
$b += 5;
}
echo "<br />Конец цикла, и значение a = " . $a . ", а значение b = " . $b;
?>
Конец цикла, и значение a = 60, а значение b = 30
8.
ЦИКЛ „FOREACH”Используется только для работы с массивами, с целью
прохождения по его значениям
Основная форма:
foreach ($массив as $value) {
код необходимый для выполнения;
}
Пример:
<?php
$municipiiMD = array("Кишинев", "Бельцы", "Тирасполь", "Бендеры", "Комрат");
echo "В Республике Молдова есть 5 муниципий: <br />";
foreach ($municipiiMD as $value) {
echo "$value <br />";
}
?>
9.
МАССИВЫ В PHPМогут хранить несколько значений в одной переменной
Доступ к этим значениям производится при помощи
числовых индексов или ключей
В PHP, массив определяется при помощи функции array()
В PHP можно определить три вида массивов:
◦ Индексированные массивы - данные массивы численно
индексируются
◦ Ассоциативные массивы - те массивы, в которых поля
индексируются ключами
◦ Многомерные массивы - массивы, содержащие один или
несколько других массивов
10.
ИНДЕКСИРОВАННЫЕ МАССИВЫ1)
Индексы присваиваются автоматически, начиная с 0
$municipiiMD = array("Chisinau", "Balti", "Tiraspol", "Bender", "Comrat");
2)
Индексы присваиваются вручную
$municipiiMD[0]="Chisinau";
$municipiiMD[1]="Balti";
$municipiiMD[2]="Tiraspol";
$municipiiMD[3]="Bender";
$municipiiMD[4]="Comrat";
11.
ФУНКЦИИ ДЛЯ РАБОТЫ СИНДЕКСИРОВАННЫМИ МАССИВАМИ
В случае когда не известно количество элементов в массиве,
можно использовать функцию которая считает их – count()
Прохождение элементов массива, уже было описано, можно
использовать foreach
Пример (без foreach):
<?php
echo "<br />";
$municipiiMD = array("Кишинев", "Бельцы", "Тирасполь", "Бендеры",
"Комрат");
echo "В Республике Молдова есть 5 муниципий: <br />";
$lungimeVector = count($municipiiMD);
for ($x = 0; $x < $lungimeVector; $x++) {
echo $municipiiMD[$x];
echo "<br />";
}
?>
12.
АССОЦИАТИВНЫЕ МАССИВЫАссоциативные массивы похожи на матрицы - специальным
ключам присваиваются (ставятся в соответствие) значения
массива
Существуют 2 возможности присвоения ключам значения
массива:
◦ $municipiiMD = array("Центр"=>"Кишинев", "Север"=>"Бельцы",
"Приднестровье"=>"Тирасполь", "Юг"=>"Комрат");
Или:
$municipiiMD ["Центр"] = "Кишинев";
$municipiiMD ["Север"] = "Бельцы";
$municipiiMD ["Приднестровье"] = "Тирасполь";
$municipiiMD ["Юг"] = "Комрат";
13.
ПРИМЕР ОПРЕДЕЛЕНИЯАССОЦИАТИВНОГО МАССИВА
Доступ к какому-то значению производится через ключ:
<?php
$municipiiMD = array("Центр"=>"Кишинев", "Север"=>"Бельцы",
"Приднестровье"=>"Тирасполь", "Юг"=>"Комрат");
echo "В центре находится " .$municipiiMD["Центр"];
?>
Результат:
14.
ПРОХОЖДЕНИЕ АССОЦИАТИВНОГОМАССИВА
Пример:
<?php
$municipiiMD = array("Центр"=>"Кишинев", "Север"=>"Бельцы",
"Приднестровье"=>"Тирасполь", "Юг"=>"Комрат");
echo "<br /><br />";
foreach($municipiiMD as $x => $x_value) {
echo "Ключ - " . $x . ", значение - " . $x_value;
echo "<br />";
}
?>
15.
ОПРЕДЕЛЕНИЕ МАССИВА-СПИСКА(появились после 5-ой версии)
<?php
// declararea tablouruilor-lista
$array = [2, 4, 6, 8]; //определяю инд. масив-список
echo $array[2]; //afisez valoarea a 3
echo "<br />";
$array[]=12; //adaug inca un element in tablou
foreach ($array as $item) { //parcurg tabloul
echo $item."<br />";
}
echo "<br />"; // определяю асоц. масив
$array_as = ["Name" => "Jhonson", "Surname" => "Jhon"];
echo $array_as["Name"];
?>
16.
Результат17.
МНОГОМЕРНЫЕ МАССИВЫМассив может содержать другой массив в качестве своего значения, так
существуя возможность создания двух-мерного, трех-мерного... n-мерного
массива
Для выделения элемента в двух-мерном массиве необходимы два индекса, а
для выделения элемента в трех-мерном массиве – необходимы три
индекса…
Дана следующая таблица (двухмерный массив)
Название муниципия Регион
Кол.жителей, 2014
Кишинев
Центр
800000
Бельцы
Север
150000
Тирасполь
Приднестровье
142000
Бендеры
Приднестровье
99000
Комрат
Юг
26000
18.
ПРИМЕР ОПРЕДЕЛЕНИЯ ДВУХ-МЕРНОГО МАССИВА<!DOCTYPE html>
<html>
<head>
<title>Date tabel</title>
</head>
<body>
<table border = "1" cellpadding="5">
<tr style = "background-color: gray;
color:white;">
<th>Denumire municipiu</th>
<th>Regiune</th>
<th>Populatie, 2014</th>
</tr>
<?php
// tablou bidimensional
$DateMunicipii = array
(
array("Chisinau","Centru",800000),
array("Balti","Nord",150000),
array("Tiraspol","Transnistria",142000),
array("Bender","Transnistria",99000),
array("Comrat","Sud",26000)
);
foreach ($DateMunicipii as $row) {
echo "<tr>";
foreach ($row as $value_col) {
echo "<td>" . $value_col . "</td>";
}
echo "</tr>";
}
?>
</table>
</body>
</html>
19.
СОРТИРОВКА ДАННЫХ МАССИВАДля сортировки или упорядочивания содержимого массива
используются функции сортировки из PHP:
◦ sort() – упорядочивает массив в возрастающем порядке
<?php
$municipiiMD = array("Кишинев", "Бельцы", "Тирасполь", "Бендеры",
"Комрат");
echo "В Республике Молдова есть 5 муниципий: <br />";
$lungimeVector = count($municipiiMD);
sort($municipiiMD);
for ($x = 0; $x < $lungimeVector; $x++) {
echo $municipiiMD[$x];
echo "<br />";
}
?>
◦ Результат:
20.
СОРТИРОВКА ДАННЫХМАССИВА
$DateMunicipii = array
(
array("Кишинев", "Центр", 800000),
array("Бельцы", "Север", 150000),
array("Тирасполь", "Приднестровье", 142000),
array("Бендеры", "Приднестровье", 99000),
array("Комрат", "Юг", 26000)
);
sort($DateMunicipii);
21.
СОРТИРОВКА ДАННЫХ МАССИВАrsort() – упорядочивает массив в убывающем порядке
<?php
$municipiiMD = array("Кишинев", "Бельцы", "Тирасполь", "Бендеры", "Комрат");
echo "В Республике Молдова есть 5 муниципий: <br />";
$lungimeVector = count($municipiiMD);
rsort($municipiiMD);
for ($x = 0; $x < $lungimeVector; $x++) {
echo $municipiiMD[$x];
echo "<br />";
}
?>
◦ Rezultat:
22.
СОРТИРОВКА ДАННЫХ МАССИВАasort() – функция производит сортировку ассоциативного
массива по возрастанию, в зависимости от значений
Пример:
<?php
$municipiiMD = array("Центр"=>"Кишинев", "Север"=>"Бельцы",
"Приднестровье"=>"Тирасполь", "Юг"=>"Комрат");
asort($municipiiMD);
echo "В центре находится " .$municipiiMD["Центр"];
echo "<br /><br />";
foreach($municipiiMD as $x => $x_value) {
echo "Ключ - " . $x . ", значение - " . $x_value;
echo "<br />";
}
?>
23.
СОРТИРОВКА ДАННЫХ МАССИВАarsort() - функция производит сортировку ассоциативного
массива по убыванию, в зависимости от значений
Пример:
<?php
$municipiiMD = array("Центр"=>"Кишинев", "Север"=>"Бельцы",
"Приднестровье"=>"Тирасполь", "Юг"=>"Комрат");
arsort($municipiiMD);
echo "В центре находится " .$municipiiMD["Центр"];
echo "<br /><br />";
foreach($municipiiMD as $x => $x_value) {
echo "Ключ - " . $x . ", значение - " . $x_value;
echo "<br />";
}
?>
24.
СОРТИРОВКА ДАННЫХ МАССИВАksort() - функция производит сортировку ассоциативного
массива по возрастанию, в зависимости от ключей
Пример:
<?php
$municipiiMD = array("Центр"=>"Кишинев", "Север"=>"Бельцы",
"Приднестровье"=>"Тирасполь", "Юг"=>"Комрат");
ksort($municipiiMD);
echo "В центре находится " .$municipiiMD["Центр"];
echo "<br /><br />";
foreach($municipiiMD as $x => $x_value) {
echo "Ключ - " . $x . ", значение - " . $x_value;
echo "<br />";
}
?>
25.
СОРТИРОВКА ДАННЫХ МАССИВАkrsort() - функция производит сортировку ассоциативного
массива по убыванию, в зависимости от ключей
Пример:
<?php
$municipiiMD = array("Центр"=>"Кишинев", "Север"=>"Бельцы",
"Приднестровье"=>"Тирасполь", "Юг"=>"Комрат");
krsort($municipiiMD);
echo "В центре находится " .$municipiiMD["Центр"];
echo "<br /><br />";
foreach($municipiiMD as $x => $x_value) {
echo "Ключ - " . $x . ", значение - " . $x_value;
echo "<br />";
}
?>
26.
УДАЛЕНИЕ ПОСЛЕДНЕГОЭЛЕМЕНТА ИЗ МАССИВА
Функция array_pop() удаляет последний элемент массива
Синтаксис: array_pop(название_массива)
Пример:
<?php
$municipiiMD = array("Chisinau", "Balti", "Tiraspol", "Bender", "Comrat");
array_pop($municipiiMD);
$lungimeVector = count($municipiiMD);
echo "Republica Moldova dispune doar de " . $lungimeVector . " municipii si
acestea sunt: <br />";
for ($x = 0; $x < $lungimeVector; $x++) {
echo $municipiiMD[$x];
echo "<br />";
}
?>
27.
РЕЗУЛЬТАТ ПРИМЕРА28.
УДАЛЕНИЕ ПЕРВОГОЭЛЕМЕНТА МАССИВА
Функция array_shift() удаляет первый элемент массива
Синтаксис: array_shift(массив)
Пример:
<?php
$municipiiMD = array("Chisinau", "Balti", "Tiraspol", "Bender", "Comrat");
array_shift($municipiiMD);
$lungimeVector = count($municipiiMD);
echo "Republica Moldova dispune doar de " . $lungimeVector . " municipii si acestea
sunt: <br />";
for ($x = 0; $x < $lungimeVector; $x++) {
echo $municipiiMD[$x];
echo "<br />";
}
?>
29.
РЕЗУЛЬТАТ ПРИМЕРА30.
ДОБАВЛЕНИЕ ЭЛЕМЕНТА ВМАССИВ
Функция array_push() добавляет новый элемент(ы) в конце
массива
Синтаксис: array_push(tablou, valoare1, valoare2...)
Пример:
<?php
$municipiiMD = array("Chisinau", "Balti", "Tiraspol", "Bender", "Comrat");
array_push($municipiiMD, Edinet);
$lungimeVector = count($municipiiMD);
echo "Republica Moldova dispune doar de " . $lungimeVector . " municipii si
acestea sunt: <br />";
for ($x = 0; $x < $lungimeVector; $x++) {
echo $municipiiMD[$x];
echo "<br />";
}
?>
31.
РЕЗУЛЬТАТ ПРИМЕРА32.
ДОБАВЛЕНИЕ ЗНАЧЕНИЙ ВНАЧАЛЕМАССИВА
Функция array_unshift() добавляет переданные в качестве
аргументов элементы в начало массива
Порядок включенных элементов сохраняется. Все числовые
ключи будут изменены таким образом, что нумерация массива
будет начинаться с нуля, в то время как строковые ключи
останутся прежними
Синтаксис:
array_unshift (название_массива, значения)
Пример:
$verdeata = array("marar", "patrunjel", "leustean", "telina");
array_unshift($verdeata, "busuioc", "rozmarin");
for ($x = 0; $x < count($verdeata); $x++) {
echo $verdeata[$x];
echo "<br />";
}
33.
ПОИСК ЗНАЧЕНИЯ В МАССИВЕИспользуется функция in_array(arg1, arg2) – производится поиск
значения arg1 в массиве arg2
Пример:
<?php
$caut = "marar";
$verdeata = array("marar", "patrunjel", "leustean", "telina");
if (in_array($caut, $verdeata)) {
echo "Am gasit!!!";
}else{
echo "Sorry! Nu este!";
}
?>
34.
Удаление и замена значенийФункция array_splice() - удаляет элементы из массива и заменяет их
новыми элементами
Функция возвращает массив с уже удаленными элементами
Синтаксис:
array_splice(array, start, length, array)
◦ array – обязателен и определяет массив для удаления элементов
◦ start – обязателен. Числовое значение. Указывает, позицию откуда функция
начнет удалять элементы. Это значение может быть и отрицательным
◦ length – необязателен. Числовое значение, означающее сколько эл. Будут
удалены
◦ array – необязателен, определяет массив с элементами, которые будут
вставлены в исходный массив. Может быть только один элемент
35.
Примеры1) $verdeata = array("marar", "patrunjel", "leustean", "telina");
$new_elem = array("busuioc", "cimbru");
array_splice($verdeata,0,1, $new_elem);
foreach($verdeata as $value) {
echo $value."<br />";
}
2) $verdeata = array("marar", "patrunjel", "leustean", "telina");
array_splice($verdeata,0,0,"salata");
foreach($verdeata as $value) {
echo $value."<br />";
}
3) $verdeata = array("marar", "patrunjel", "leustean", "telina");
array_splice($verdeata,-2,2,"");
foreach($verdeata as $value) {
echo $value."<br />";
}
36.
Результаты37.
ФУНКЦИИ ОПРЕДЕЛЕННЫЕПРОГРАММИСТОМ
В PHP существуют более 1000 предопределенных функций... но
программист может определить и свои собственные функции
Функция состоит из блока скриптов, который можно использовать
повторно в программе
Функция не выполняется сразу после создания, но только тогда когда она
вызывается, при выполнении скрипта
Основная форма / синтаксис используемый при определении функции:
function имяФункции() {
выполняемый код при вызове функции;
}
◦ Имя функции начинается на букву или знака подчеркивания
◦ Желательно что бы имя функции отображало действие функции
◦ Имя функции не является чувствительным к регистру (Function names are caseinsensitive, though it is usually good form to call functions as they appear in their
declaration)
38.
ПРИМЕР ОПРЕДЕЛЕНИЯФУНКЦИИ
<?php
//определение функции
function afiseazaZiua() {
echo "Сегодня " . date("d. m. Y");
}
afiseazaZiua(); // вызов функции
?>
39.
ФУНКЦИИ С ПАРАМЕТРАМИКакие-то данные (информации) можно передать функции при
помощи аргументов. Аргумент похож на переменную
Параметр, обычно определяются после имени функции, в
скобках
◦ Можно использовать несколько параметров/аргументов для
функции и тогда их необходимо разделить при помощи запятой
Пример:
<?php
function varsta($fvarsta) {
echo "<br />Ей $fvarsta лет.";
}
varsta(45);
varsta(33);
varsta(24);
?>
40.
ПРИМЕР ОПРЕДЕЛЕНИЯ ФУНКЦИИ СДВУМЯ АРГУМЕНТАМИ
<?php
function varsta($fnume, $fvarsta) {
echo "<br />$fnume - " . $fvarsta . " лет.";
}
varsta("Лена", 45);
varsta("Миша", 33);
varsta("Емилия", 24);
?>
41.
ФУНКЦИИ С ПРЕДОПРЕДЕЛЕННЫМИЗНАЧЕНИЯМИ
Пример:
<?php
function varsta($fnume = "Она", $fvarsta = 40) {
echo "<br />$fnume - " . $fvarsta . " лет.";
}
varsta("Лена", 45);
varsta("Миша", 33);
varsta("Емилия", 24);
varsta();
?>
PS: Предопределенные значения будут использованы когда функция будет
вызвана без значений в аргументе
Смотрите еще:
http://php.net/manual/ru/functions.arguments.php#functions.arguments.default
42.
ФУНКЦИИ, ВОЗВРАЩАЮЩИЕЗНАЧЕНИЯ
Что бы была возможность возвращения какого-то значения,
как результат выполнения функции, используется
конструкция return
Пример:
<?php
function cronometru($x, $y) {
$diferenta = $x - $y;
return $diferenta;
}
echo "<br />Astazi este " . date(d) . " februarie si pana la sfantul Valentin " .
date(Y) ." au mai ramas " . cronometru(14, date(d)). " zile :)";
?>
43.
PHP — это язык со свободнойтипизацией
В приведенных ранее примерах не нужно было указывать
PHP, к какому типу данных относится переменная
PHP автоматически создаёт связь между типом данных и
переменной, в зависимости от ее значения. Поскольку
типы данных не установлены в строгом смысле, можно
добавить строку к целому числу, не вызывая ошибки...
В PHP 7 были добавлены объявления типов. Это дает
возможность указать ожидаемый тип данных при
объявлении функции, а добавление строгого объявления
(strict declaration) вызовет «фатальную ошибку», если
тип данных не будет соответствовать
44.
ПримерВ следующем примере попытаемся отправить в функцию числа, строки
без использования strict. И поскольку strict НЕ включен, «7 years»
изменяется на int(7) и результат будет число
<?php
function getAge(int $year, int $years_nmbr) {
return $year - $years_nmbr;
}
echo "The event took place in -> " .
getAge(date("Y"), "7 years");
?>
Результат: The event took place in -> 2016
45.
Любое значение, которое может быть приведенок типу int, будет передавать тип как подсказку...
46.
Декларация strictЧтобы указать строгость, нам нужно установить
declare(strict_types=1);
(you tell the engine that int $x means $x must only be an int proper, no type coercion allowed )
Это должно быть в самой первой строке файла PHP
В следующем примере (предыдущий с добавлением декларации)
так же попытаемся отправить в функцию текстовые строки, но в этом
случае добавим объявление strict – данное объявление заставляет
использовать все по назначению
В этом случае будет сгенерирована ошибка:
Fatal error: Uncaught TypeError: Argument 1 passed to getAge() must be of the
type integer, string given
47.
Исправляем допущенныеошибки...
<?php
declare(strict_types=1); // strict requirement
function getAge(int $year, int $years_nmbr) {
return $year - $years_nmbr;
}
echo "The event took place in -> " .
getAge(intval(date("Y")), 7);
?>
Результат: The event took place in -> 2016
48.
Объявления типавозвращаемого значения PHP
PHP 7 также поддерживает объявления типов для оператора return
Как и в случае с объявлением типа для параметров функции, включение строгого
требования вызовет «фатальную ошибку» при несоответствии типа
Чтобы объявить тип для возврата функции, необходимо добавить двоеточие ( : ) и тип
прямо перед открывающей фигурной скобкой ( { ) при объявлении функции
В следующем примере укажем тип возвращаемого значения для функции:
<?php
declare(strict_types=1); // strict requirement
function getAge(int $year, float $years_nmbr) : float {
return $year - $years_nmbr;
}
echo "The event took place in -> " . getAge(intval(date("Y")), 7.0) . ", type "
. var_dump(getAge(intval(date("Y")), 7.0));
?>
The event took place in -> 2016, type float(2016)
49.
Передача аргументов поссылке
В PHP аргументы обычно передаются по значению, что означает, что в функции
используется копия значения, а переменная, которая была передана в функцию, не
может быть изменена
Когда аргумент функции передается по ссылке, изменения в аргументе также
изменяют переданную переменную
Чтобы превратить аргумент функции в ссылку, используется оператор &:
<?php
declare(strict_types=1); // strict requirement
function getResult(int &$year) {
$year -= 7;
}
$other_year = intval(date("Y"));
getResult($other_year);
echo "Result is " . $other_year;
?>
50.
!!!Знания
Что мы учили/прошли сегодня?
Способности/Навыки
Что мы можем сделать с полученными знаниями?
Отношения / Поведение
Что, как, где и для чего мы можем применить, знания и
навыки полученные сегодня?
Задача: Используя заархивированный шаблон, из Moodle, 3ья Tema и предложенный скрипт динамической генерации
контента, в рамках lab3 - написать функцию, которая будет
динамически генерировать в цикле слайды карусели из
шаблона
Для следующей пары - Повторяем формы и контролы форм