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

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

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

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

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

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

или особенно излишне говорить:

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

Мысли?

17 голосов | спросил Ben Saufley 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 17 Sep 2010 23:40:32 +0400 2010, 23:40:32

3 ответа


0

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

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

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

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

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

var a = false || 'A' || false; // 'A' 
var b = true && 'A' && 'B';    // 'B';
ответил Matthew 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 17 Sep 2010 23:58:46 +0400 2010, 23:58:46
0

В таких случаях вы должны проверить наличие переменной в $ _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";

ответил Fanis 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 17 Sep 2010 23:57:35 +0400 2010, 23:57:35
0

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

$var = !empty($_GET['var'])?$_GET['var']:'default';
ответил Nathan 2 J0000006Europe/Moscow 2014, 19:20:38

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132