ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

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

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Спонсор статьи: Маленькие диваны для гостиной - маленький угловой диван в гостиную mnogodivanov.ru.

PHP. Переменные, операторы и выражения. Часть Пятая.


28-12-2009

Освобождение памяти
PHP-приложения, как и любые другие приложения, потребляют память. Кроме того, PHP потребляет память для обеспечения внутренних целей. Определенное пространство занимают данные, которые обрабатываются в приложении в основной своей массе в переменных. Обычно для выполнения PHP-приложений требуется немного памяти, поэтому не стоит беспокоиться о ее экономии. В процессе выполнения PHP-машина определяет, какие участки памяти уже не используются, чтобы отвести их под новые переменные. В конце каждого запроса PHP-машина освобождает всю используемую память с помощью специального запроса.
Большие приложения, которые используют большое количество переменных, потребляют большие блоки памяти, поэтому в этом случае экономия памяти может стать довольно насущной проблемой. В данном случае PHP требуется идентификация тех переменных, которые больше не нужны. Для того чтобы это сделать, можно воспользоваться двумя методами: присвоить переменной значение NULL или воспользоваться функцией unset.
При присвоении значения NULL переменная сама по себе остается, но она больше не ссылается на память. Для обслуживания переменной PHP использует небольшое количество памяти, но потребляемая память не является единственной проблемой. Этот подход имеет и побочный эффект, заключающийся в том, что если сценарий будет пользоваться этой переменной позднее, машина PHP не сможет предупредить программиста о том, что эта переменная не определена.
Функция unset полностью удаляет переменную из памяти. Такое решение снимает проблему нехватки памяти. Кроме того, при каждом обращении к такой переменной генерируется сообщение.
После применения этого метода можно проверить значение, хранящееся в переменной, воспользовавшись функциями isset и empty. Для того чтобы проверить переменную на значение NULL, можно воспользоваться функцией is_null. Эти функции подробно обсуждаются в главе 11, "Данные".
Ссылки
По умолчанию после присвоения переменной значения, хранящегося в другой переменной, создается копия данных. В листинге 2.5 продемонстрировано такое поведение переменных. Так, значение переменной b остается неизменным даже после изменения значения переменной a. В большинстве случаев это допустимое поведение. Но если необходимо, чтобы две переменные хранили одно и то же значение, можно воспользоваться оператором ссылки &.

| Листинг 2.5. Присвоение переменным значений переменных
<?php
// создать переменную $a = "Apple";
//присвоить значение $a переменной $b
$b = $a;
//изменить $a $a = "Ball"; //распечатать Apple print($b); 

В листинге 2.6 продемонстрирована работа оператора &. В этом примере a и b разделяют один и тот же блок памяти, и присвоение значения одной из переменных приводит к изменению общего значения. Поэтому переменную b можно рассматривать в качестве псевдонима (или, по-другому, алиас) a, за исключением того, что существование b не зависит от a. Внутренне PHP "понимает" существование ссылок на один блок памяти. Конечно, можно создать столько ссылок на одно значение, сколько необходимо. Есть два способа удалить ссылку: воспользоваться функцией unset или создать ссылку на другое значение.

| Листинг 2.6. Присвоение по ссылке
<?php
// создать переменную $a = "Apple"; //создать ссылку $b = &$a;
//изменить значения $a и $b $a = "Ball"; //удалить $a unset($a);
//Распечатать значение Ball print($b);
?>

Смещение строк
Если переменная содержит строку, к каждому символу можно обратиться, используя фигурные скобки. Нумерация символов строки начинается с нуля. Для того чтобы сослаться на седьмой символ переменной s, необходимо указать $s{6}. Кроме того, пользуясь такой формой записи, можно задать значение символа в строке: $s{6} = 'x'. В PHP для замены указанного символа используется только первый символ значения в правой части выражения. Если переменная в левой части не является строкой, она не будет изменена. В листинге 2.7 показано использование фигурных скобок для ссылки на отдельные символы.

| Листинг 2.7. Ссылка на отдельный символ_
<?php
//поменять пробел на символ подчеркивания
$s = "a string";
$s{1} = print($s);
?>

Исторически сложилось так, что PHP использует квадратные скобки для задания смещения в строке. Однако из-за неоднозначности, возникающей при использовании такой же записи при работе с массивами, эта форма записи не применяется.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Переменные, операторы и выражения. Часть Четвёртая. PHP. Переменные, операторы и выражения. Часть Шестая.