Автор оригинала: David Wong.
Функция unset () PHP используется для очистки и уничтожения переменных. Мы можем использовать unset() для уничтожения неиспользуемых переменных. Но иногда функция unset() не может уничтожить память, занятую переменными!
Давайте возьмем пример
Наконец, память, занятая до захода солнца (), выводится за вычетом памяти, занятой unset(). Если это положительное число, то это означает, что unset ($s) уничтожил $s из памяти (другими словами, потребление памяти после unset() было уменьшено). Однако на платформах PHP5 и Windows результат составляет: – 48.
Означает ли это, что unset ($s) не уничтожает память, занятую переменной $s? Давайте рассмотрим следующий пример:
Этот пример почти такой же, как и приведенный выше пример. Разница лишь в том, что $s состоит из 256 единиц, то есть на 1 больше, чем в первом примере. В результате получается 224. Означает ли это, что unset ($s) уничтожил память, занятую $s?
Из двух приведенных выше примеров мы можем сделать следующие выводы:
Вывод 1. Функция unset() может освободить место в памяти только в том случае, если значение переменной занимает более 256 байт.
Можно ли использовать unset для освобождения места в памяти, если значение переменной превышает 256? Давайте проверим это на примере
'; echo $m-$mm; ?>
Когда мы обновляем страницу, мы видим, что в первой строке 256 единиц, а во второй-48. Согласно разуму, мы уничтожили $s, но $P относится только к переменной $s, которая не должна иметь содержимого. Кроме того, потребление памяти после отмены установки ($s) выше, чем до отмены установки()! Теперь давайте сделаем следующий пример:
'; echo $m-$mm; ?>
Теперь обновите страницу, мы видим, что вывод $P не содержит содержимого, а разница в потреблении памяти до и после unset() составляет 224, то есть память, занятая переменными, была очищена. В этом примере также можно заменить на unset (), как показано ниже:
'; echo $m-$mm; ?>
Мы используем unset (), чтобы уничтожить как $s, так и $P. в это время разница между использованием памяти составляет 224, что указывает на то, что память также может быть освобождена. Тогда мы можем сделать другой вывод:
Вывод 2. Только когда все переменные (например, ссылочные переменные), указывающие на переменную, будут уничтожены, память будет освобождена.
Я считаю, что после примеров в этой статье мы должны иметь некоторое представление о unset(). По крайней мере, я использую unset() для освобождения памяти, когда переменные не работают.
Дополнение к контенту
PHP использует unset() для удаления единицы в массиве
Отмена установки может удалить как переменные, так и ячейку в массиве. Однако обратите внимание, что массив не перестраивает индекс.
Примерами являются следующие:
"; print_r($arr); ?>
Выходные результаты выглядят следующим образом:
Array ( [0] = > Chaoyang District [1] = > Haidian District [2] = > Xicheng District [4] = > Fengtai District )
В этой статье будет рассказано об использовании unset для уничтожения переменных и освобождения памяти в PHP. Для получения дополнительной информации о том, как PHP использует unset для уничтожения переменных и освобождения памяти, пожалуйста, найдите предыдущие статьи developeppaer или продолжайте просматривать соответствующие статьи ниже. Я надеюсь, что вы сможете больше поддерживать developeppaer в будущем!
Оригинал: “https://developpaper.com/using-unset-to-destroy-variables-and-free-memory-in-php/”