2014-01-15 3 views
-6

В JavaScript мы можем сделать что-то вроде:PHP Определение/объявление переменной с альтернативными значениями с использованием «||» «ИЛИ»

var x = y || z; 

Как вы сделать то же самое в PHP?

Я хочу что-то вроде:

$x = $y || $z 

это возможно?

Thanx!

+4

Попробуйте и посмотрите. –

+0

, мы должны предположить, что вы точно знаете, что делает код JS, но это не обязательно. Итак ... прежде всего: что вы хотите сделать? –

+1

'?:' - нет, это ответ. Я уверен, что это было задано много раз и раньше. – deceze

ответ

3

Если вы хотите $x быть логическое значение, указывающее на truthiness из $y || $z (т.е. если либо $y или $z является truthy Тогда что вы вывесили:. $x = $y || $z будет работать

Если вы хотите $ х, чтобы иметь такое же значение, как и первые, не ложные переменные вы могли бы сделать трехкомпонентный:.

$x = $y ? $y : $z; 
+0

Конечно, но как я могу получить typeof и убедиться, что ошибка не возникает, если она не определена? i.e: в Javascript: var x = typeof (y)! == "undefined"? y: z; Как вы это делаете в PHP? –

+0

@UniversalGrasp 'empty' или' isset' могут использоваться для проверки того, не определена ли переменная. См. [Пусто] (http://uk3.php.net/empty) и [isset] (http://uk3.php.net/isset). – Jim

+0

Вы - человек! ... Thax a Trillion! –

0

Я думаю, что вы имеете в виду проверить, определена ли первая переменная.
По крайней мере, это обычная утилита в JS, где вы напишете x = y || z, что означает не более чем if y is defined then x = y otherwise x = z.
Это работает только потому, что JS обрабатывает undefined как false!

В PHP вы можете использовать isset, чтобы проверить, если что-то имеет значение/определено:

$z = "test"; 
$x = isset($y) ? $y : $z; 

echo $x; //echoes "test" 
2

Вы можете сделать это, но это не будет иметь те же результаты, как и в JavaScript.

В Javascript, y || z возвращает значение y, если оно правдивое, в противном случае оно возвращает z. Это полезно при инициализации переменных, поскольку позволяет назначить y, но вернуться к z, если y не установлен.

В PHP || является булевым оператором, он всегда возвращает true или false. Таким образом, $y || $z не вернет значения переменных, он просто вернет, является ли любой из них правдивым.

Чтобы получить эквивалентный результат, вы должны использовать:

$x = $y ? $y : $z; 

Начиная с PHP 5.3, это может быть сокращено до:

$x = $y ?: $z; 
Смежные вопросы