244.71K
Category: programmingprogramming

Операторы циклов. Массивы в 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 - написать функцию, которая будет
динамически генерировать в цикле слайды карусели из
шаблона
Для следующей пары - Повторяем формы и контролы форм
English     Русский Rules