Глобальные переменные позволяют получать доступ из функции к общим переменным. Оператор global показывает, что данная переменная будет той же самой переменной всюду в программе. Пример без оператора global:
<?php
function get_number() {
$num = 100;
}
$num = 10;
get_number();
echo $num;
?>
Результатом работы этого скрипта будет 10, так как переменная не видна из функции. Решить эту проблему поможет оператор глобальных переменных global.
<?php
function get_number() {
global $num;
$num = 100;
}
$num = 10;
get_number();
echo $num;
?>
Этот скрипт выведет 100, так как после определения переменной как глобальной она становится видимой из функции. Вообще существует 1000 и 1 способ изменить переменную из функции. Можно сделать return и присвоить функцию переменной. Можно использовать ссылки, например:
<?php
function get_number(&$num) {
$num = 100;
}
$num = 10;
get_number($num);
echo $num;
?>
Скрипт выведет 100. Тоже самое с помощью return.
<?php
function get_number() {
$num = 100;
return $num;
}
$num = 10;
$num = get_number();
echo $num;
?>
Этот скрипт также выведет 100. Ну и наконец с помощью классов:
<?php
class number
{
public $num;
public function get_number()
{
$this->num = 100;
}
}
$obj = new number();
$obj->num = 10;
$obj->get_number();
echo $obj->num;
?>
Ну как вы догадались, здесь тоже будет 100. Еще существуют статические переменные. Статические переменные – это такие переменные, которые не исчезают после завершения функции. Значение статической переменной можно использовать при следующем вызове функции, она по прежнему будет иметь значение, которое получила при последнем вызове функции.
<?php
function get_number() {
static $num = 0;
$num++;
echo $num."<br>";
}
$num = 10;
get_number();
get_number();
echo $num;
?>
Результатом будет 1, 2 и 10, так как переменная была объявлена статичной. Если бы мы этого не сделали результатом работы было бы 1, 1 и 10.