@adrenalinruslan

Стоит ли удалять переменные?

Допустим у меня есть такой код:

foreach($array_game as $value) {
			$params = [
				'where' => [
					'g_id' => $value['g_id'],
				],
				'table' => 'games',
			];
			if(empty($this->getInfo_mysql($params))) {
				unset($params);
				$params = [
					'g_id'			=> $value['g_id'],
					'g_time'		=> $value['g_time'],
					'g_result'		=> $value['g_result'],	
				];
				$this->insertGame_mysql($params);
				unset($params);
			}
		}


Оставить ли мне unset ? Или это бесмысленно
  • Вопрос задан
  • 2430 просмотров
Пригласить эксперта
Ответы на вопрос 3
t-alexashka
@t-alexashka
Сразу пишу legacy код
Смысла нет, т.к. переменная переопределяется каждую итерацию. Даже наверно будет хуже если вы ее будете удалять, т.к. время и ресурсы (хотя я не знаю какие ресурсы выделяются под unset) на лишнюю бесполезную операцию.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
выполнять unset имеет смысл только в том случае, если переменная содержит большой объем данных и после ее использования есть еще большой объем кода. Тогда в целом это может быть оправдано, в частности определение новых переменных будет происходить из освобожденной области памяти, а не занимать новые блоки, в противном случае это лишний оверхед на создание / удаление переменной.
Ответ написан
Комментировать
@kuftachev
unset($params);
$params = [.....];

Я не знаю, будет ли какая-то оптимизация, но если бы выполнить все как есть, то unset говорит, что нужно удалить переменную, а значение удалиться при сборке мусора, потом создаётся новая переменная с таким же именем.

Если убрать unset, то не будет создаваться новая переменная, просто той же присвоится новое значение, а старое станет недоступно и соберётся ч сборщиком мусора.

Это все в том случае, если вообще будет сборка мусора до конца скрипта.

Так что, unset тут точно не место.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы