Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 18.01.2017
Сообщений: 207

Почему когда я передаю одной переменной значение другой по ссылке, а потом удаляю исходную, она остаётся в первой

24.12.2024, 07:46. Показов 811. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
$a = '123';
$b = &$a;
unset($a);
echo '$b: '.$b;
выводит $b: 123. как удалить переменную так, чтобы она удалилась во всех местах, где есть ссылки на неё?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2024, 07:46
Ответы с готовыми решениями:

Как избежать изменения одной переменной ссылочного типа, когда изменяется значение другой переменной
Подскажите, пожалуйста, как избежать изменения одной переменной ссылочного типа, когда изменяется значение другой переменной ссылочного...

Когда удаляю данные таблицы стилей (style.css), то все остается так как было
Друзья, помогите решить эту проблему, первый раз столкнулся с ней. Я удаляю стили из таблицы, но на сайте все равно все остается, =>...

Как посчитать и запомнить значение переменной в одной функции, а потом использовать ее в другой функции?
//файл task.cpp #include "stdafx.h" bool twice (int mas, int n) { int k=0; for (int i=1;i<=n; i++) { if ((mas>9)...

12
Эксперт PHP
 Аватар для liris
4352 / 997 / 148
Регистрация: 16.01.2023
Сообщений: 2,453
24.12.2024, 10:42
Ваш пример есть в документации:

https://www.php.net/manual/ru/... .unset.php

Цитата Сообщение от 4234 Посмотреть сообщение
как удалить переменную так, чтобы она удалилась во всех местах, где есть ссылки на неё?
Вы уверены, что вам действительно нужно удалять переменные? В PHP обычно не нужно принудительно (руками) чистить память.
0
Заблокирован
24.12.2024, 10:48
unset-нуть каждую переменную
0
Заблокирован
24.12.2024, 10:51
Сборщик мусора со всем разберется. На практике никто удалением переменных не занимается. PHP это не Си.
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
25.12.2024, 21:58
Цитата Сообщение от barabar Посмотреть сообщение
На практике никто удалением переменных не занимается
Не совсем корректное замечание.
Особенно актуально в задачах выполняемых на кроне. И тут важно понимать. что сборщик мусора может не помочь. Вы передаете переменную по ссылке несколько раз в течении жизни скрипта. В какой то момент времени передаете в объект реализующий паттерн одиночка. Мусорщик не будет удалять переменную если на нее есть еще ссылка. И вот у вас память занята огромным массивом, который вам не нужен, но занимает ресурсы. Пример конечно утрированный но тем не менее.

А есть еще задачи использующие RoadRunner

А вообще на данную тематику есть видео которое можно посмотреть https://www.youtube.com/watch?v=56I5C0NYjv8
2
Заблокирован
26.12.2024, 07:31
Цитата Сообщение от voral Посмотреть сообщение
Вы передаете переменную по ссылке несколько раз в течении жизни скрипта.
Еще ни разу у меня не возникала такая необходимость передавать переменную по ссылке. Ни разу. А я уже пятнадцать лет занимаюсь веб-разработкой. Я не создаю себе проблемы, что бы потом героически их решать.
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
26.12.2024, 13:04
Естественно это я привел утрированный пример. Опять же если работа в команде, и объект "ходит" по различным сервисам...


Проблема с передачей по ссылке только от не понимания, как и что работает. Ее нет необходимости "героически решать" просто ты делаешь как надо и все

Тут, возможно, хорошим и полезным навыком будет опыт работы с сями или ассемблером. Просто уважаешь память и все.
Опять же, если будет актуальным вопрос по утечкам памяти на проекте. То и избегать передачу по ссылке не оправданно. Да и вообще на первом месте должен быть вопрос за чем передаете.

Т.е. это, на мой взгляд, из вопросов у которых нет единственно правильного совета для всех 100% проектов. Но лучше разбираться, чтобы не было героических решений в любом варианте
0
Эксперт PHP
 Аватар для liris
4352 / 997 / 148
Регистрация: 16.01.2023
Сообщений: 2,453
26.12.2024, 14:30
Цитата Сообщение от barabar Посмотреть сообщение
Еще ни разу у меня не возникала такая необходимость передавать переменную по ссылке.
Вы с объектами не работаете? В PHP объекты передаются по ссылке. Иллюстрация:

PHP
1
2
3
4
5
6
7
8
9
10
11
class Foo {
    public $bar;
}
 
$A = new Foo();
$B = $A;
 
$A->bar = '123';
$B->bar = '456';
 
echo $A->bar; // 456
0
Заблокирован
26.12.2024, 15:01
liris, я могу еще раз повторить. Ни разу не было такой необходимости.
Цитата Сообщение от liris Посмотреть сообщение
Вы с объектами не работаете?
С объектами я работаю в Laravel, но вот такие присваивания никогда не делал и даже не могу представить, какой в этом смысл.
Цитата Сообщение от liris Посмотреть сообщение
$B = $A;
И не вижу никакого смысла в принудительном удалении переменных. Может быть... когда-нибудь у меня вдруг появится желание это сделать. Но за долгие годы никогда такого не случилось. Я говорю только за себя и никого ни к чему не призываю.
0
 Аватар для sad67man
2598 / 1502 / 689
Регистрация: 23.08.2015
Сообщений: 3,800
26.12.2024, 15:59
Цитата Сообщение от barabar Посмотреть сообщение
Еще ни разу у меня не возникала такая необходимость передавать переменную по ссылке.
Ну в функцию/метод же передавали объекты?

Цитата Сообщение от barabar Посмотреть сообщение
И не вижу никакого смысла в принудительном удалении переменных.
Это уже другое утверждение)

Добавлено через 20 минут
barabar, Мне кстати приходилось - при чтении большого excel файла скрипт начал иногда падать из-за нехватки памяти - толком не разобрался из-за чего, но помогло чтение по частям. Но это сработало только при принудительном запуске сборщика мусора, а чтоб он освободил память - нужно удалять переменные.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
26.12.2024, 21:30
Цитата Сообщение от liris Посмотреть сообщение
В PHP объекты передаются по ссылке.
Не совсем.
https://www.php.net/manual/ru/... rences.php

Цитата Сообщение от liris Посмотреть сообщение
PHP
1
$B = $A;
Тут работает другой механизм - copy on write.
1
 Аватар для andrey_f
882 / 535 / 228
Регистрация: 21.02.2011
Сообщений: 5,706
27.12.2024, 10:53
Цитата Сообщение от 4234 Посмотреть сообщение
выводит $b: 123. как удалить переменную так, чтобы она удалилась во всех местах, где есть ссылки на неё?
так подойдет ?
PHP
1
2
3
4
5
6
7
8
$a = '123';
$b = &$a;
 
// Устанавливаем $a в null
$a = null;
 
// Теперь $b тоже будет null
echo '$b: ' . $b; // Выводит $b:
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
27.12.2024, 12:40
Цитата Сообщение от barabar Посмотреть сообщение
но вот такие присваивания никогда не делал и даже не могу представить, какой в этом смысл.
А вы ожидаете в таких обсуждениях увидеть 100500 строк не нужного кода? Логично же, что примеры уменьшают до минимально необходимого уровня. Возможно все не так очевидно, но в той же ларе под капотом вы наверняка это используете. Просто вот так явно в коде этого может и не быть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2024, 12:40
Помогаю со студенческими работами здесь

Скажите, пожалуйста, почему в переменной fn остаётся значение 1, а не символ, введенный с клавиатуры?
Добрый день! Вспоминаю программирование. Скажите, пожалуйста, почему в переменной fn остаётся значение 1, а не символ, введенный с...

Переменной всегда присваевается значение 2, даже когда она инициализированна
Ребят, прошу помоч с косяком, который мешает дальшейшему созданию программы. имеется код: /*Формируется окно редактирования,...

Передаю в функцию строку, меняю ей, а снаружи она не меняется, почему?
Передаю в функцию строку (*char) - указатель Проделываю с ней всякие вещи в функции а она не меняется, то есть снаружи остаётся такая же....

Как присвоить одной переменной значение другой рандомной переменной исключая её ?
Как присвоить одной переменной значение другой рандомной переменной исключая её ?

Почему в этой программе я могу ввести значения только первой переменной и дальше она завершает свою рабо
Привет всем, Почему в этой программе я могу ввести значения только первой переменной и дальше она завершает свою работу? #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru