Разработчику. Сборник рецептов PHP
Задавайте вопросы

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

Вернуться назад

Задача

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

Решение

Значение по умолчанию переменной, которая, возможно, уже имеет значение, присваивается при помощи функции 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; }
}

См. также

Документацию по функции isset() на http://www.php.net/isset;

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ