2013-07-05 3 views
-5

Хорошо, поэтому у меня есть код, который дает мне возможность.Функция Echo vs Return

Для вызова функции d($z);

$ Z сам является объявленным переменным в другом месте в коде.

Это не работает:

function d($x1){ 
$distance = $x1; 
return $distance; 
} 

Это работает:

function d($x1){ 
$distance = $x1; 
echo $distance; 
} 

Любые идеи, почему?

Примечание: Я не хочу, чтобы значение echo'd. Я хочу иметь возможность использовать значение позже, как переменную, и не обязательно печатать на экране. (Теперь это упрощенная версия, много было удалено из того, что я действительно хочу сделать, но даже вышеизложенное не вернется должным образом для меня)

Хотя это не то, что я хочу сделать, поскольку Я хочу использовать результат $ distance как внутреннюю переменную (не эхо), если я делаю <?=$distance?>, она не работает с возвратом.

+2

Показать код, вызывающий функцию. Приписывает ли это результат переменной? – Barmar

+1

Как вы называете d()? Оставьте остальную часть кода. – Gustavo

+0

Неправильно ли что? вы должны дать нам более подробную информацию. Как его использовать и т. Д.? – Prix

ответ

1

Есть 2 возможно (возможно, больше) проблемы:

  1. Вы не передавая правильное значение в функцию

    или

  2. Вы не присваивающей возврат к переменной (например, $value = d("some value here");)

Редактировать: Не подделывать t to echo $ value (сохраненный возврат)

+0

Странно ... когда я пошел редактировать, он говорит 2 (я клянусь, что я набрал 2), и все еще выдает 1. Какого черта? –

+1

@ Barmar он на самом деле написал это правильно, но забыл добавить пространство, чтобы это произошло. – Prix

0

Оба работают точно так, как ожидалось.

В первом примере вы не отображают значение функции г

изменения его

function d($x1) 
{ 
     $distance = $x1; 
     return $distance; 
} 

echo d(5); 

и отобразит его.

Во втором случае вы не возвращаете значение, поэтому функция недействительна, но вы показываете расстояние внутри функции d(), чтобы оно отображалось.