Глобальные и статические переменные в PHP | Базовый курс PHP-7

preview_player
Показать описание
Мы научимся на практике создавать и использовать ГЛОБАЛЬНЫЕ и СТАТИЧЕСКИЕ переменные внутри функций. Поймем для чего они нужны, их польза и вред для программирования.

Мы научимся:
- Использовать глобальные переменные
- Использовать статические переменные
- Возвращать массивы через return

ДОМАШНЕЕ ЗАДАНИЕ:
Рекомендации по теме
Комментарии
Автор

Андрей, у вас отличные уроки, единственный минус хотелось бы чтоб чаще выходили видео по данной теме!)

vladimiryashchuck
Автор

Уроки супер спасибо.!!!
А будет уроки по создание и работы с база данными?

almaz
Автор

Спасибо за урок
вот наброски для дз
<?php // php 8.2

// les 24

// ПРАКТИКА:
// 1.Создайте функцию с глобальной переменной, которая будет делать следующие вещи:
// Принимать параметрами два числа
// Внутри умножать их друг на друга
// Возвращать глобальную переменную с результатом
// 2.*Вызовите функцию два раза
// Второй раз используйте первый параметр саму функцию
// 3.*Создайте функцию с следующим функционалом:
// Принимает два параметра (имя, дату возраст)
// внутри функции считаете (преобразовываете) возраст в количество прожитых месяцев
// внутри функции считаете (преобразовываете) возраст в количество прожитых дней
// Через return возвращаете массив:
// [имя, возраст, месяца, дни]

$var1=10;

function calc($a, $b){
global $var1;

$var1=$a*$b;
return $var1;

}

// echo $var1;
echo calc(11, 2) . '<br>'; //11*2= 22
echo calc(calc(5, 2), 3) . '<br>'; //5*2= 10 10*3= 30
echo calc(calc(calc(5, 2), 2), 3) . '<br>'; //5*2= 10 10*2= 20 20*3 =60

//

function calcAge($name, $birthdate){
$today = new DateTime();
$birthdate = new DateTime($birthdate);
$age = $birthdate->diff($today); // сравнение разницы дат между рождением и текущей
$months = $age->y * 12 + $age->m;// Сколько лет * на месяцы(12) + месяцы в текущем году до даты
$days=$age->days;
// return [$name, $age->y, $months, $days];
return ['Имя = '.$name, 'Количество полных лет = ' . $age->y,
'Количество месяцев = '. $months,
'Количество дней = '. $days];
}

$name ='John';
$birthdate = '2001-09-17';

$result = calcAge($name, $birthdate);

echo "<pre>";
print_r($result);
echo "</pre>";

aleksandrsh
Автор

В 3 задании нужно вывести массив, а не просто переменные. Ну, наверное, как вариант:
function nameAge($var, $var1)
{
$varM = $var1 * 12;
$varD = $var1 *365;
$varAll = [$var, $var1, $varM, $varD];
return $varAll;
}

echo "<pre>";
print_r(nameAge("Masha", 28));
echo "</pre>";

mabinori
Автор

а если поменять местами строки ($var = 5;) и (echo getSum()."<br>";) то будет 2 а потом 5

kabukijoe
Автор

Не понимаю как делать вот это:
2. *Вызовите функцию два раза
a. Второй раз используйте первый параметр саму функцию

oqwpgef
Автор

Объясните, пж, почему на 13:50 в 18 строке кода статик переменной не присваивается каждый раз при вызове функции значение 0?

gleck
Автор

третье задания лёгкое, я скорее первое не понял что от меня хотелось. Проверьте кому не лень

<?php

function Calc($num1, $num2){
global $sum;
$sum = $num1 * $num2;
return $sum;
}

echo Calc(10, 20) . "<hr>";

echo Calc(20, $sum);

function Test($name, $age){
$c_age = $age * 12;
$c_age1 = $age * 360;
$arr = [$name, $age, $c_age, $c_age1];
return $arr;
}

echo "<pre>";
print_r(Test("David", 21));
echo "</pre>";

?>

fohkdsb
Автор

Для тех кто не справился с дз:

1)$var = 0;
function number($num1, $num2){
global $var;
$var = $num1 * $num2;
return $var;
}
number(4, 3);
echo $var;


2)function number($num1, $num2){
$var = $num1 * $num2;
return $var;
}
echo number(number(4, 3), 2);

3)function spisok($name, $age){
$month = $age * 12;
$days = $age * 365;
return ["Имя" => $name, "Возраст" => $age, "Месяца" => $month, "Дни" => $days];
}

developerno
Автор

Кстате вот эти видео по php было довольно не легко найти в ютубе почему-то.

vitalijslavrinovics
Автор

Задание 3:

$name = "Max";

function num($var1 = 12, $var2 = 30){

$result = $var1 * $var2;
return $result;
}

echo $name . "<br>";
echo num() . "<br>";
echo num(365);

bywihfk
Автор

После часа раздумий, и попыток вывести через return Ничего не получилось, списал по сути в документации.
Задание 1:

$sum = 3;
$sum1 = 4;

function getsum(){

global $sum1, $sum;
$sum1 = $sum1 * $sum;
}

echo getsum();
echo $sum1;


Андрей, вы бы как делали ?

bywihfk
Автор

function fNew($a, $b){
global $var;
$var=$a*$b;
return $var;
echo "<br>";
}


fNew(6, 6);
echo $var;
echo "<br>";
$f=fNew(6, 6);

echo fNew($f, 6);//вызов функции 2й раз
echo "<br>";

function newDate($name, $age){

$mes = $age*12;// количество прожитых месяцев
$dney = $age*365;//количество прожитых дней
return ['имя' =>$name, 'возраст' =>$age, 'месяца' =>$mes, 'дни' =>$dney ];

}
echo "<pre>";
print_r (newDate('Константин', 37));
echo "</pre>";

dtyepin
Автор

function lifeCalculator($name, $bornDay, $bornMonth, $bornYear){
$month = (date('Y') - $bornYear)*12 + date('m') - $bornMonth;
if($month >= 12){
$age = date('Y') - $bornYear;
}else{
$age = 0;
}
$days = $month*30.4167 + date('d') - $bornDay + ($age / 4);
return ['Имя' => $name, 'Возраст' => $age,
'Месяцев прожил' => $month, 'Дней прожил' => (int) $days];

}

qbyftne
Автор

// 1, 2 задачи
function globalMath($num1, $num2){
global $mult;
$mult = $num2 * $num1;
return $mult;

}

echo globalMath(10, 20) . "<br>";
echo globalMath($mult, 10); // 2 задача



// 3 задача

function youAge($name, $born){
$day = date('j') - $born[0]; //Вычисляем сколько дней прожито в этом году
$month = date('n') - $born[1]; //Вычисляем сколько месяцев прожито в этом году
$year = date('Y') - $born[2]; //Вычисляем сколько прожито лет
$ageDay = $day + $month*30 + $year*365;
$ageMonth = $month + $year*12;

return [$name, $ageDay, $ageMonth, $year];

}

$bornDay = [28, 9, 1991]; // Дата рождения День, Месяц, Год
$name = 'Viktor';

$age = youAge($name, $bornDay);
echo "Привет, {$age['0']}. Ваш возраст в днях: {$age['1']}, месяцах: {$age['2']} и годах: {$age['3']}";

LesoVitek
Автор

function arrayLife($name, $age)
{
$mouth = $age * 12;
$day = $age * 365 + (floor($age / 4)); /// Учитываем высокосный год.

return ["Имя"=>$name, "Возраст"=>$age, "Прошло месяцев"=>$mouth, "Прошло дней"=>$day];
}
$name = "Вася";
$age = 30;
foreach (arrayLife($name, $age) as $item => $value){
echo $item." - ".$value.'</br>';
}

andrOpik