2011-08-10 13 views
1

URLに定義されていない$ _GET(URLに定義可能)を使用して変数をチェックするPHPの三項演算子を使用する方法の例を教えてもらえますか?別のPHPファイルに設定されています。それがURLや別のPHPファイルに設定されていない場合は、 "default"と同じにします。最新のPHPのバージョンで3進演算子質問

+0

さて、あなたは三元なし*この*を行うだろうか?それが完了すると、フォームを変更することは、実用的であれば、簡単な運動になります。 (つまり、*既存のコード*を表示して、何をしたいのですか) –

+0

「別のPHPファイルにvarが設定されているかどうかを確認する」という正確な意味は?この他のPHPファイルが含まれていて、変数がクラスなどに含まれていない場合は、このファイルに定義されている場合と同じです。しかし、あなたが "別のPHPファイル"を持っている場合は、いくつかの詳細を追加する必要があります。 – FrankS

+0

説明が不十分で申し訳ありませんが、説明するのは良いことです。基本的には、各状態ごとに異なるURLを使用してさまざまな状態を表示したいと思うので、これらのさまざまな状態をサイト全体の多くのページに表示する必要があります。インクルード前に各ファイルの先頭に設定したいこれらのページのリンクにクエリ文字列を含めることを心配する必要はありません。これが理にかなってほしい! – Zoolander

答えて

3
$myVar = isset($_GET["someVar"]) ? $_GET["someVar"] : (isset($someVar) ? $someVar : "default"); 
3
$value = isset($_GET['somevar']) ? $_GET['var'] : $default_value; 

、このショートカットのバージョンがあります:

$値= ISSET($ _ GET [ 'SOMEVARは']):$ DEFAULT_VALUE;? (最初のバージョンと同じではありません)

$GLOBALS['nameofvar']を使用すると、特定のPHP変数も定義されているかどうかを確認することができますが、関数内でチェックを行っている場合は問題になります。

+0

そのショートカットは 'isset'で期待どおりに動作しますか?私の理解は、式の結果( 'isset(...)'の場合は 'true')を返すので、' $ _GET ['somevar' ]?:$ default_value; ' – Problematic

+0

スクリプトのクエリに' somevar'がない場合、 '$ _GET ['somevar']'は存在せず、isset()はfalseを返します。しかし、この三項演算子に達する前に、あなたのスクリプトの他の部分が$ _GETでできないことは何も言いません。 –

+1

注:issetはブール値を返すので、 '$ _GET ['somevar']'が設定されている場合、ショートカットバージョンの '$ value'は真です。 –

2

あなたはこのような何かを探しています:

if(isset($_GET["MyVar"])) 
{ 
    $newVar = $_GET["MyVar"]; 
} 
else if(isset($myVar)) 
{ 
    $newVar = $myVar; 
} 
else 
{ 
    $newVar = "default"; 
} 

または

$newVar = isset($_GET["MyVar"]) ? $_GET["MyVar"] : (isset($myVar) ? $myVar : "default"); 
+1

シュレッダーは、三元版の編集に私を打つ:) – evasilchenko