Официальный сайт студ.городка НГТУ
Программирование и БД » Занимательный PHP, или как я провел 3 часа... 

#1  26.10.07 14:37

Занимательный PHP, или как я провел 3 часа...

Код: php:

 
  function get( &$data )
  {
    if ( isset( $data ) )
      return $data;
    else
    {
      unset($data);
      return false;
    }
  }
 
$a = array(1=>1, 2=>2);
$b = get($a[3]);
print_r($a); // что тут будет? :)

PHP Version 4.4.2

Offline

#2  26.10.07 16:08

Re: Занимательный PHP, или как я провел 3 часа...

Код: shell:

Array
(
       [1] => 1
       [2] => 2
)

теоретически... точнее, то, что ты хочешь видеть :)

а практически:

Код: shell:

Array
(
    [1] => 1
    [2] => 2
    [3] =>
)


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

Исправлено Jaguar (26.10.07 16:25)

Offline

#3  29.10.07 03:11

Re: Занимательный PHP, или как я провел 3 часа...

удаление одной ссылки (unset) не приводит к удалению переменной и освобождению памяти, потому что счетчик ссылок для этой переменной не равен нулю, так как есть вторая ссылка на эту переменную :)
проблема в том, что в пхп ссылки лишь могут указывать на одну и ту же область памяти, но сами при этом никак не связаны между собой

Offline

Программирование и БД » Занимательный PHP, или как я провел 3 часа... 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.119 сек.
Выполнено 14 запросов.