Установка значения по умолчанию

Задача
Необходимо присвоить значение по умолчанию переменной, у которой еще нет значения. Часто бывает необходимо присвоить переменной жестко запрограммированное значение по умолчанию, которое может быть перезаписано значением, введенным пользователем в форме, или значением переменной окружения.

Решение
Значение по умолчанию переменной, которая, возможно, уже имеет значение, присваивается при помощи функции isset():

if (! isset($cars)) { $cars = $default_cars; }

А трехчленный оператор (a ? b : c) позволяет присвоить значение (возможно, значение по умолчанию) новой переменной:

$cars = isset($_REQUEST['cars']) ? $_REQUEST['cars'] : $default_cars;

Обсуждение
Применение функции isset() имеет важнейшее значение в случае присваивания значений по умолчанию. Без нее значение не по умолчанию не может быть равным 0 или чему бы то ни было еще, что приравнивается к false. Рассмотрим следующее присваивание:

$cars = $_REQUEST['cars'] ? $_REQUEST['cars'] : $default_cars;

Если $REQUEST['cars'] равно 0, то $cars устанавливается в $default_cars, даже если 0 является допустимым значением для $cars.Для упрощения присваивания множества значений по умолчанию можно использовать массив таких значений.


Ключи в этом массиве
представляют имена переменных, а значения массива – это значения по умолчанию для каждой из переменных:

$defaults = array('emperors' => array('Rudolf II','Caligula'),
'vegetable' => 'celery',
'acres' => 15);
foreach ($defaults as $k => $v) {
if (! isset($GLOBALS[$k])) { $GLOBALS[$k] = $v; }
}

Переменные находятся в глобальном пространстве имен, поэтому предыдущий код не может применяться для установки локальных значений внутри функций. Для этого нужны переменные переменных:

foreach ($defaults as $k => $v) {
if (! isset($$k)) { $$k = $v; }
}

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Обмен значениями без временных переменных
Операторы == и =: как избежать путаницы
Получение дампа содержимого переменных в виде строк
Сериализация данных сложных типов в виде строки
Совместное использование переменных процессами

Вернуться в раздел: PHP / 5. Переменные