za4me
@za4me
Человек

Хорошая статья по ссылкам php?

Добрый день, посоветуйте пожалуйста чтиво по ссылкам в php, стандартная дока не помогла осилить логику работы ссылок.
Легкие примеры понятны, передача параметров по ссылке в функцию так-же ясны, а вот возвращение по ссылке "ниасилил".

Также непонятен данный кусок кода из офф доки:
function foo(&$var)
{
    $var++;
}
function &bar()
{
    $a = 5;
    return $a;
}
foo(bar());


Функция foo принимает значение по ссылке, а функция bar возвращает $a по ссылке, по идее foo(bar()) должна вернуть 6, но на деле не работает.
  • Вопрос задан
  • 170 просмотров
Решения вопроса 2
nazarpc
@nazarpc
Open Source enthusiast
Ну погодите, в foo() ведь вообще нет return, ничего возвращаться не должно.
Вот так будет работать:
function foo(&$var)
{
    $var++;
    return $var;
}
function &bar()
{
    $a = 5;
    return $a;
}
echo foo(bar());


А вообще лучше официальной документации и комментариев под материалом маловероятно что-то найти.
Ответ написан
Все просто!) bar возвращает ссылку на $a а не само значение! А foo принимает ссылку а не значение и изменяет его! Тем самым $a в bar станет 6)

а вот возвращение по ссылке "ниасилил".
просто когда мы return $a мы возвращаем значение 5! А если мы перед названием функции пишем & то это значит что она возвратит ссылку на эту переменую с этим значением)

// возвращает значение которое хранится в $a
function bar()
{
    $a = 5;
    return $a;
}

// возвращает ссылку на $a , эту ссылку можно использовать в функциях ожидающих ссылку а не значение например foo()
function &bar()
{
    $a = 5;
    return $a;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы