Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: return $result

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Что возвращает?
DeepVarvar Супермодератор
Отправлено: 11 Октября, 2011 - 20:25:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. function etc() {
  2.   $result = pi()*2;
  3.   return $result;
  4.   }
  5.  
  6. $a = etc();


Что возвращается в $a?
Точнее, что происходит:

1) Перемещение ссылки на значение от $result к $a, но $result "остается жить" занимая память, хотя мы до него уже не достучимся?

2) Копирование ссылки на значение от $result к $a?

3) Перемещение ссылки на значение от $result к $a и неявный unset($result);?
 
 Top
caballero
Отправлено: 11 Октября, 2011 - 20:30:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




копирование результат


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Октября, 2011 - 20:32:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




caballero результат находится в сегменте памяти. Переменная является ссылкой на этот сегмент. Далее интересует вопрос озвученный выше.
 
 Top
Мелкий Супермодератор
Отправлено: 11 Октября, 2011 - 20:44:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




DeepVarvar пишет:
неявный unset($result);?

Почему неявный? Более чем явный. Уничтожаются все переменные, инициализированные в функции/методе.
Можно поглядеть, создав в функции объект класса с каким-нибудь echo в деструкторе.

А $a через механизм ленивого копирования PHP получает ссылку на результат, которая после выхода из функции является единственной ссылкой на эту область памяти.

Хотя гарантировать не смогу.


-----
PostgreSQL DBA
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Октября, 2011 - 20:46:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Надо поэкспериментировать с достаточным объемом данных, мБ на 10...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Операционная система и системные вызовы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB