2015-03-26 2 views
-1

Почему эта программа не работает должным образом? Я прочитал книгу PHP5, которая пишет, что следующая программа должна приводить к 25; Я получаю 15.Возврат из функции по ссылке (PHP5)

function numberPlus($number){ 
    $number += 5; 
    return $number; 
} 

$oldNumber = 10; 
$returnNumber = &numberPlus($oldNumber); 
$oldNumber += 10; 
echo $returnNumber; 
+0

улучшения форматирования + правильных тегов для видимости – iGbanam

ответ

0

'Причина, по которой вы возвращаете число с помощью этой функции. Это может быть то, что вы хотите:

function numberPlus(&$number){ 
    $number += 5; 
} 

$oldNumber = 10; 
numberPlus($oldNumber); 
$oldNumber += 10; 
echo $oldNumber; // 25 
+0

Хм, не совсем. Ваш режим работает, потому что вы ссылаетесь на переменную, но я хочу ссылаться на функцию. Поэтому я хочу вызвать функцию, и после этого я изменяю значение переменной (без & $ number). Все одинаково. Я полагаю, что книга слишком старая (2005). Однако, спасибо вам за помощь! :) – Mistic

0

функция в PHP может вернуть ссылку, добавив & свое название как:

function &function_name($params) 
{ 
    ... 
} 

Вы также должны вызвать эту функцию с &:

$var = &function_name(...); 

Однако обратите внимание, что ссылка должна быть действительной после завершения функции, или она не будет работать. Если функция возвращает ссылку на одну из своих локальных переменных, эта переменная будет уничтожена в момент завершения функции, а $var будет null.

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

В вашем случае, вы должны сделать что-то вроде:

function &numberPlus(&$number) // param is reference 
{ 
    $number += 5; 
    return $number; 
} 

$a = 10; // 10 
$b = &numberPlus($a); // $a == $b == 15 
$b += 10; // $a == $b == 25 
+0

Да, я хочу получить этот результат. Большое спасибо! :) – Mistic

Смежные вопросы