Ссылки в PHP

FavoriteLoadingДобавить в избранное

Ссылки в PHP позволяют работать с переменными, ссылаясь на одну и ту же область памяти, что предоставляет больше гибкости в программировании. Это особенно полезно при передаче параметров в функции и при изменении значений нескольких переменных, указывающих на одно и то же место в памяти. Для создания ссылки перед переменной используется символ амперсанда &.

Копирование значений переменных

Для начала рассмотрим простой пример, когда одна переменная копирует значение другой:

<?php
$kira = "Кира";
$vika = $kira;
$vika = "Вика";
echo "kira = $kira <br>";   // kira = Кира
echo "vika = $vika";  // vika = Вика
?>

Здесь переменной $vika присваивается значение переменной $kira ("Кира"). Затем переменной $vika присваивается новое значение - "Вика". В результате:
kira = Кира
vika = Вика

Передача по ссылке

Теперь посмотрим на ситуацию, когда переменная ссылается на другую переменную:

<?php
$kira = "Кира";
$vika = &$kira;  // передача ссылки
$vika = "Вика";
echo "kira = $kira <br>";  // kira = Вика
echo "vika = $vika";  // vika = Вика
?>

В данном примере выражение $vika = &$kira; создаёт ссылку на переменную $kira. Теперь обе переменные указывают на одну и ту же область памяти. Изменение значения одной переменной приводит к изменению значения другой, потому что они ссылаются на одно и то же место:
kira = Вика
vika = Вика
Таким образом, изменение значения $vika меняет и значение $kira, поскольку они связаны ссылкой.

Передача параметров по ссылке

Кроме копирования переменных, ссылки можно использовать при передаче параметров в функции. Рассмотрим два способа передачи параметров: по значению и по ссылке.

Передача по значению

Стандартный способ передачи параметра - это передача по значению:

<?php
function square($a) {
    $a *= $a;
    echo "a = $a";
}

$number = 5;
square($number);
echo "<br>number = $number";
?>

Результат программы:
a = 25
number = 5
Здесь значение переменной $a внутри функции возводится в квадрат, но исходная переменная $number не изменяется, так как передача параметра происходит по значению.

Передача по ссылке

Теперь рассмотрим передачу параметра по ссылке:

<?php
function square(&$a) {
    $a *= $a;
    echo "a = $a";
}

$number = 5; 
square($number);
echo "<br>number = $number";
?>

Результат:
a = 25
number = 25
Передача по ссылке осуществляется с помощью амперсанда & перед параметром функции: function square(&$a). Теперь переменная $a внутри функции и переменная $number будут указывать на одну и ту же область памяти. Это приводит к изменению исходной переменной после выполнения функции.

Возвращение ссылки из функции

Функции в PHP могут не только принимать параметры по ссылке, но и возвращать ссылки. Для этого перед именем функции также указывается символ амперсанда:

<?php
function &checkName(&$name) {
    if($name === "admin") $name = "Кира";
    return $name;
}

$userName = "admin";
$checkedName = &checkName($userName);
echo "<br>userName: $userName";
echo "<br>checkedName: $checkedName";
?>

В этой функции checkName() параметр передаётся по ссылке и функция возвращает ссылку на переменную $userName. При изменении значения внутри функции это изменение отразится и на исходной переменной.
Результат программы:
userName: Кира
checkedName: Кира

Заключение

Использование ссылок в PHP предоставляет мощные возможности для управления данными в памяти. Ссылки позволяют эффективно изменять значения переменных, избегая лишнего копирования данных. Это может быть полезно в сложных программах, где важно контролировать использование памяти и избегать избыточных операций с данными.

Написать Администратору

Вы можете написать Администратору сайта.

отправить