Новые форумы для: пользователей, администраторов, математиков и филологов.
0

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

Мой вариант:

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

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

задан 17 Дек '11 15:17

jkeks's gravatar image

jkeks
2546
25% принятых

изменен 17 Дек '11 19:01

%D0%A5%D1%8D%D1%88%D0%9A%D0%BE%D0%B4's gravatar image

ХэшКод
5.4k427

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

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

(17 Дек '11 15:35) jkeks

Самый короткий:

$a=$_REQUEST['a']or$a=10;
(17 Дек '11 15:50) timka_s
3

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

$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 Дек '11 15:18

timka_s's gravatar image

timka_s
5.5k9

изменен 17 Дек '11 15:32

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

(17 Дек '11 15:19) jkeks
  1. Удобнее.
  2. Быстрее. у тернарного выражения много плюсов, пользуйтесь)
(17 Дек '11 15:20) Андрей Аршинов

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

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

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

(17 Дек '11 15:24) timka_s

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

(17 Дек '11 15:24) jkeks

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

(17 Дек '11 15:30) jkeks

@timka_s,

$a = ( ( $a = $_REQUEST['a'] ) == '' && 10 ) || $a;
echo $a; // 1

И это

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

Читаем про приоритетность логических операций ;)

(17 Дек '11 15:30) Sh4dow

аа.. надо не || а OR

(17 Дек '11 15:33) jkeks

@Sh4dow, Варианты 4-6 не подходят для PHP ( но работаю в JS ), в JS - || возвращает первый почти не false аргумент

(17 Дек '11 15:35) timka_s
показано 5 из 8 показать еще 3
2
// определяем функцию: 
// работает в т.ч. со свойствами объектов и неопределенными переменными
function v(&$var, $alt = false) { return !empty($var) ? $var : $alt; }
// и далее:
$a = v($_REQUEST['a'], 10);

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

$a = @$_REQUEST['a'] or $a = 10;
ссылка

отвечен 17 Дек '11 15:20

Sh4dow's gravatar image

Sh4dow
10.6k1313

изменен 17 Дек '11 15:29

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

(17 Дек '11 15:23) jkeks

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

(17 Дек '11 15:29) Sh4dow

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

(17 Дек '11 15:32) jkeks

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

(17 Дек '11 15:34) Sh4dow

Для будущих поколений, поясню, что читается так:

( $a = @$_REQUEST['a'] ) or ( $a = 10 );
(17 Дек '11 15:46) timka_s

А еще по этому же принципу работает "or die", в частности

<? defined('APPLOADED') or header('Location: /') && die(); ?>

в начале файла.

(17 Дек '11 16:06) Sh4dow
показано 5 из 6 показать еще 1
1
$a = @$_REQUEST['a'] ?: 10;
ссылка

отвечен 17 Дек '11 19:11

Ilya%20Pirogov's gravatar image

Ilya Pirogov
5.4k19

Если @ выкинуть, будет нотис, но с нотисом работает и на 3 байтика меньше, если все пробелы повыкидывать. Классно ! Интересно а короче будет ?

$a=$_REQUEST['a']?:10;     // победитель чтоли ?
$a=$_REQUEST['a']or$a=10;
(17 Дек '11 19:18) jkeks

Отказываться пора от _REQUEST в пользу _GET ;)

(17 Дек '11 19:19) jkeks

И у вас такое работает?

Parse error: syntax error, unexpected ':'

(17 Дек '11 19:51) timka_s

Да, работает. Ternary Operator

(17 Дек '11 20:13) Ilya Pirogov

Так у вас ничего нету при true...

У меня - вылетает с ошибкой парсинга...

Почитал... Ваш код работает только при PHP >= 5.3

(17 Дек '11 20:16) timka_s
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

ХэшКод - это совместно редактируемый форум вопросов и ответов для начинающих и опытных программистов.

Присоединяйтесь!

отмечен:

×3,039

задан
17 Дек '11 15:17

показан
223 раза

обновлен
17 Дек '11 20:17

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии