17 декабря 2011

PHP: значения переменных по умолчанию

Способ тупой, жирный, уроццкий, но рабочий:

if ($_REQUEST['a']!='') $a=10; else $a=$_REQUEST['a'];

Хитрее, но немного по другому, переменную дефолт задаем изначально:

$a=10;
if ($_REQUEST['a']!='') $a=$_REQUEST['a']; 

ТрехЧлен:

$_REQUEST['a']=='' ? $a=10 : $a=$_REQUEST['a'];

И Самый мой любимый способ - логический оператор OR:

$a=$_REQUEST['a'] or $a=10;

А вы какие способы знаете ? Кстати набросать можно и на других языках, очень интересно. Надо понимать только что $_REQUEST['a'] - это взятая CGI переменная


 


а вот что я затеял на HashCode, впринципе ребята боролись минут 10:


Взять CGI переменную 'a', или если ее нет, то приравнять 10.

Мой вариант: if ($_REQUEST['a']=='') $a=10; else $a=$_REQUEST['a'];

У кого есть вариант покороче ?

php

править

задан 19 минут назад

jkeks's gravatar image

jkeks
20●4
20% принятых


Можно назвать победителем ?:

$a=$_REQUEST['a'] or $a=10;

(9 секунд назад)jkeks

добавить комментарий


2 ответа

старыеновыеценные



2


Тернарное выражение:

$a = ( $_REQUEST['a'] == '' ) ? 10 : $_REQUEST['a'];

//Можно и так:
$a = ( ( $a = $_REQUEST['a'] ) == '' ) ? 10 : $a;

//Или так:
$a = $_REQUEST['a'];
if ( $a == '' ) $a = 10;

//Не знаю насчёт PHP, в JS можно:
$a = ( $_REQUEST['a'] == '' && 10 ) || $_REQUEST['a'];
$a = ( ( $a = $_REQUEST['a'] ) == '' && 10 ) || $a;
$a = $_REQUEST['a'] || 10;

Убираем все необязательные пробелы:


  1. 42
  2. 36
  3. 34
  4. 44
  5. 37
  6. 22

Варианты 4-6 не подходят для PHP!!!

ссылка|наградить|тревога

отвечен 17 минут назад

timka_s's gravatar image

timka_s
3.4k●9

изменен 3 минуты назад


Трехчлен, отлично, но длинно

(16 минут назад)jkeks



  1. Удобнее.
  2. Быстрее. у тернарного выражения много плюсов, пользуйтесь)

(15 минут назад)Андрей Аршинов


Убираем все необязательные пробелы:

Ваше - 51, вариант 1 - 42, вариант 2 - 36, вариант 3 - 34, вариант 4 - 44, вариант 5 - 37

Что-же по вашему коротко?)

(11 минут назад)timka_s


да.. третий вариант тоже продуманный, тоже использую, но думаю можно короче.

(11 минут назад)jkeks


Варианты конечно забавные ;) но можно и короче.

(6 минут назад)jkeks


показано 5 из 8 показать все добавить комментарий



1

// определяем функцию: 
// работает в т.ч. со свойствами объектов и неопределенными переменными
function v(&$var, $alt = false) { return !empty($var) ? $var : $alt; }
// и далее:
$a = v($_REQUEST['a'], 10);

Ну ок, пробуйте, но с этим - аккуратно ;)

$a = @$_REQUEST['a'] or $a = 10;

ссылка|наградить|тревога

отвечен 15 минут назад

Sh4dow's gravatar image

Sh4dow
6.1k●1●3●12

изменен 7 минут назад


ммм.. функция.. тоже вариант.. а без функций ?

(12 минут назад)jkeks


Добавил вариант.

(6 минут назад)Sh4dow


а зачем @ ? да пожалуй это самый красивый, $a=$_REQUEST['a'] or $a=10; сомневаюсь что можно короче.

(3 минуты назад)jkeks


Функцию добавьте в основной класс, еще спасибо скажете. Собака глушит "Warning: undefined index". В вашем изначальном коде этот варнинг тоже есть, кстати.


Видеочат рулетка