Короткая форма If

sovka

Новичок
Короткая форма If

В статье так написано было:
(условие) ? funct1() : func2();

1. А как записать, когда надо выполнить 1 действие в зависимости от наличия условия.
(когда func2() отсутствует) Пробовал так:

$a > $b ? echo "Пора спать";

2. Как записать, когда funct1() или funct2() подразумевают несколько действий?

Или при таких условиях, только if () {} ?
 

tz-lom

Продвинутый новичок
короткая форма она для коротких выражений,и то не для всех
лучьше наколбасить пару лишних строк,чем всё упаковать в одну но нечитаемую
 

Фанат

oncle terrible
Команда форума
если это пустое любопытство, без конкретной задачи и цели, то удовлетворять его лучше чтением мануала.

называется эта радость "тернарный оператор". описание найти легко
 

fixxxer

К.О.
Партнер клуба
Тернарный оператор он на то и тернарный, что тернарный.
 

sovka

Новичок
Вот он как называется оказывается, спасибо, прочитал.
 

tz-lom

Продвинутый новичок
вообще говоря можно
PHP:
isset($A)?NULL:call_user_func(function(){echo 'Никогда';echo ' так ';echo 'не делай';});
но никогда так не делай xD
 

FB3

Новичок
В 5.3 появился короткий тернарный оператор.
http://ru.php.net/ternary
Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.
 

newARTix

Новичок
нету под рукой php 5.3. Сразу заинтересовал вопрос, что выведет?

<?php $i=1; echo ($i++)?:0; exit;

1 или 2? А то мало ли...
 

newARTix

Новичок
Тогда действительно круто :)

-~{}~ 24.08.10 23:20:

Резко захотелось перейти на эту ветку :)
 

BRat

o_0
Помоему это не шибко читаемо. Неужели многим людям потребовалась необходимость в такой возможности?
 

newARTix

Новичок
Вот если бы еще Notice не генерился, на неопределенную переменную. То есть чтобы короткий тернарный оператор выполнял и функции isset, было бы вообще ништяк.

А то isset($var)?$var:null; вот это больше всего задолбало.
 

newARTix

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

LONGMAN

Dark Side of the Moon..
newARTix
Для этого нужно использовать свой обёртки типа $var = myclassRequest::getVar('var', 'defaultValue'); где всё проверишь и т.д.
 
Сверху