Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В функциях чем отличается global, return и передача переменной по ссылке через &
 
 автор: Sarat   (04.11.2014 в 09:34)   письмо автору
 
 

Хочется понять четко.
Вот это передача по ссылке. Я правильно понимаю, что значение переменной при таком методе отражается как в зеркале? Если нет, сразу скажите!

<?php
 
function foo(&$var)
 {
    
$var++;
 }

$a=5;
foo($a);
// $a здесь равно 6
?>

Но почему когда возвращаешь то такой эффект не получаем
 
function foo($var)
 {
    $var++;
    return($var);
 }

$a=5;
foo($a);
echo $a; //а здесь равно 5, почему?
?>

И еще вопрос, в какое именно место return возвращает переменную? Я только читал что якобы возвращает в функцию, но куда именно? Может не быть мне программистом?

  Ответить  
 
 автор: confirm   (04.11.2014 в 09:54)   письмо автору
 
   для: Sarat   (04.11.2014 в 09:34)
 

Не отражается как в зеркале, а и есть "является ссылкой на...". То есть &$var ссылается на $a и $var++ это равноценно $a++.
Поэтому и возвращать return($var) не имеет смысла.

Возврат происходит не в какое-то место, а в точку вызова, и возвращаемый результат можно присвоить переменной, выражению и т.п.

  Ответить  
 
 автор: Sarat   (05.11.2014 в 13:41)   письмо автору
 
   для: Sarat   (04.11.2014 в 09:34)
 

А вот еще вопросик.

<?php
function translate($red$green)
{
    
  
$blue 'голубой';
  return 
$blue; return $red; return $green;
   
}
$red 'красный';
$green 'зеленый';
$trans translate($red$green);
echo 
$trans;
?>

Почему выводит "голубой", но не выводит "зеленый" и "красный"? Ведь я все три возвращаю!

  Ответить  
 
 автор: confirm   (05.11.2014 в 13:47)   письмо автору
 
   для: Sarat   (05.11.2014 в 13:41)
 

return $blue; - это возврат из функции, а return $red; return $green; - хоть целую эпопею пишите, это уже мусор, кто эти возвраты выполнять должен?

  Ответить  
 
 автор: sarat   (08.11.2014 в 14:26)   письмо автору
 
   для: Sarat   (04.11.2014 в 09:34)
 

.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования