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 :: Организация работы с памятью в PHP
Плохой ли тон, работать с несуществующей переменной по ссылке?
Для начала поясните, что Вы имеете ввиду. (Я догадываюсь, о чём речь, но, если Вы приведете детали, я думаю, Вы сами ответите на свой вопрос)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
avtor.fox
Отправлено: 16 Марта, 2013 - 14:55:09
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
Выделено в отдельную тему из темы "Минимальные значения из двумерного массива" EuGen, обращение к элементу по жёсткой ссылке.
Так как обращение у несуществующим объектам невозможно, они создаются автоматически.
Спасибо
EuGen
Отправлено: 16 Марта, 2013 - 14:59:06
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Имеется ввиду, например, индекс массива? Строго говоря, ничего плохого с точки зрения языка в этом нет. Я, впрочем, предпочитаю всегда контролировать такие ситуации с помощью isset и/или array_key_exists. Почти всегда, если логика алгоритма верна, работать с несуществующими элементами не придется - ведь всегда можно проверить существование (и, если элемент не существует, принять некоторое решение).
"Жесткая ссылка" через амперсанд - это как раз то, о чем я надеялся, Вы сами догадаетесь (то есть в контексте данного вопроса, что именно происходит с такими ссылками при "несуществовании" целевого элемента)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
avtor.fox
Отправлено: 16 Марта, 2013 - 15:16:06
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Нет нет, я не про ключи (индексы) массива, а именно про передачу объекта по "жёсткой ссылке" через амперсанд в замыканиях.
Я уже понял что объект создастся и ошибки никакой не будет.
EuGen
Отправлено: 16 Марта, 2013 - 15:19:17
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Выделено в отдельную тему из темы "Минимальные значения из двумерного массива" В Вашем случае произошло просто создание переменной в глобальном контексте (оттуда она передается в use потому что). Представьте себе более интересный случай (попробуйте ответить без исполнения):
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
avtor.fox
Отправлено: 16 Марта, 2013 - 15:23:45
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
Выделено в отдельную тему из темы "Минимальные значения из двумерного массива" $bar является ссылкой на $foo, по этому при обращении к $bar мы получим (блин, NULL)? (Добавление)
Я оказался не прав.
Получается что $bar является копией $foo, но с указателем на неё? (Добавление)
Прочитал статью и моё сознание в данном вопросе стало ясным.
Как оказалось, ссылающиеся переменные всего лишь работают со значением (назовём её родителем). При удалении родителя, его значение не удаляется если на него ссылаются другие переменные. При полном отсутствии переменных, которые привязаны "жёсткими ссылками", значение родителя удаляется.
При полном отсутствии переменных, которые привязаны "жёсткими ссылками", значение родителя удаляется.
нет...просто становится недоступным(ну а как?)))
ячейка памяти помечается свободной уже сборщиком мусора
EuGen
Отправлено: 16 Марта, 2013 - 16:15:40
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Выделено в отдельную тему из темы "Минимальные значения из двумерного массива" Работа с переменными и памятью в php можно описать одной фразой: copy on write
Как только смысл этого будет ясен, абсолютно все вопросы отпадут.
выделено в новую тему
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
LIME
Отправлено: 16 Марта, 2013 - 16:18:32
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
а какое отношение отложенное копирование к удалению?
LIME
Отправлено: 16 Марта, 2013 - 16:18:49
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.