18

基本的に、変数が存在しない場合を除き、変数を 1 つのものとして定義できるようにしたいと考えています。どこかで、次のような省略形の条件文を見たことを誓います。

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

しかし、これを正しく行うためのドキュメントが見つかりません。正直なところ、JS か ASP か、私が見たものであった可能性があります。

上記のコードで発生する必要があるのは、いずれかのステートメントが true を返すかどうかを確認することだけであることを理解しています。しかし、最初に失敗した場合のデフォルトを本質的に定義する何かを誰かが行っているのを見たと思いました。これは誰かが知っていて、私を助けることができるものですか? 私はクレイジーですか?次のように言うのは冗長に思えます。

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

または特に言うのは冗長です:

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

考え?

4

3 に答える 3

16

Matthewは、PHP5.3でそれを行う唯一の方法についてすでに述べています。それらをチェーンすることもできることに注意してください。

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

これは次のものと同じではありません。

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

その理由は、PHPがこの点でほとんどの伝統的な言語のようであるということです。論理ORは常にtrueorを返しますfalse。ただし、JavaScriptでは、final式が使用されます。(一連のORでは、これが最初の非偽のORになります。)

var a = false || 'A' || false; // 'A' 
var b = true && 'A' && 'B';    // 'B';
于 2010-09-17T19:58:46.083 に答える
8

このような場合、$ _ 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";

于 2010-09-17T19:57:35.833 に答える
3

いつも空を使っています。

$var = !empty($_GET['var'])?$_GET['var']:'default';
于 2014-06-02T15:20:38.590 に答える