Подтвердить что ты не робот

Сокращенное условное значение для определения переменной, основанной на существовании другой переменной в PHP

По сути, я бы хотел, чтобы определить переменную как одну вещь, если эта вещь не существует. Я клянусь, что где-то я увидел условное сокращение, которое выглядело примерно так:

$var=$_GET["var"] || "default";

Но я не могу найти документацию, чтобы сделать это правильно, и, честно говоря, это может быть JS или ASP или что-то там, где я его видел.

Я понимаю, что все, что должно происходить в приведенном выше коде, - это просто проверить, возвращает ли оператор true. Но я думал, что видел, как кто-то делает что-то, что по сути определило значение по умолчанию, если первое не удалось. Это что-то об этом знает и может мне помочь? Я сумасшедший? Кажется излишним сказать:

$var=($_GET["var"]) ? $_GET["var"] : "default";

или особенно лишний, чтобы сказать:

if ($_GET["var"]) { $var=$_GET["var"]; } else { $var="default"; }

Мысли?

4b9b3361

Ответ 1

Мэтью уже упомянул единственный способ сделать это в PHP 5.3. Обратите внимание, что вы также можете связать их:

$a = false ?: false ?: 'A'; // 'A'

Это не то же самое, что:

$a = false || false || 'A'; // true

Причина в том, что PHP подобен большинству традиционных языков в этом аспекте. Логическое ИЛИ всегда возвращает true или false. Однако в JavaScript используется окончательное выражение. (В серии ORs он будет первым недействительным.)

var a = false || 'A' || false; // 'A' 
var b = true && 'A' && 'B';    // 'B';

Ответ 2

В таких случаях вы должны проверить наличие переменной в $_GET, а затем, действительно ли она действительна для ваших параметров. Например:

$var = (isset($_GET["var"]) && $_GET['var'] !== '') ? $_GET["var"] : "default";

Однако это может стать довольно нечитаемым довольно быстро. Я бы сказал, что он читается, сначала инициализируя вашу переменную до безопасного по умолчанию, а затем перезаписывая ее с помощью внешнего, если это действительно:

$var = "default";
if (isset($_GET['var') && $_GET['var'] !== '') {
    $var = $_GET['var] ;
}

Как для вашего первого примера, $var=$_GET["var"] || "default"; существует в Javascript: var someVar = incomingVar || "default";

Ответ 3

Я всегда использовал пустой.

$var = !empty($_GET['var'])?$_GET['var']:'default';