2017-08-13 3 views
-4

私はこれに対する確かな答えを見つけることができませんでした。 if/else文に変数を代入することができるので、一部のHTMLに文全体を含める必要はありません。PHP - if else文に変数を代入する

たとえば、これは正しいのでしょうか?そうでない場合は、正しい方法はありますか?

$agency = if ($event == "Tornado Watch" || $event == "Severe Thunderstorm Watch") { 
      echo "NWS Storm Prediction Center"; 
     } elseif ($event == "Hurricane Watch" || $event == "Tropical Storm Watch") { 
      echo "NWS National Hurricane Center"; 
     } else { 
      echo $wfo; 
     } 
+0

この方法ではありませんが、3者演算子またはスイッチケースを使用できます。あなたが持っているものは、予期せぬ予告を出すでしょう。 –

+0

あなたは何を達成しようとしていますか? – fubar

+0

最初にこの理由が分からない理由が分からないので説明してください。第二に、達成しようとしていることが私のポストに述べられています。私はdivタグ内にその文全体を挿入する必要がないようにしようとしています。変数を挿入して、コアロジックをコアPHP内に保つだけで、はるかにクリーンです。 – Texan78

答えて

2

私は何がやりたいことはいくつかのロジックに基づいて$機関に値を代入して、$機関の値をエコーであると思います。

<?php 
$agency = $wfo; 
if ($event == "Tornado Watch" || $event == "Severe Thunderstorm Watch") 
{ 
    $agency = "NWS Storm Prediction Center"; 
} 
elseif ($event == "Hurricane Watch" || $event == "Tropical Storm Watch") 
{ 
    $agency = "NWS National Hurricane Center"; 
} 

echo $agency; 

[編集]あなたはそれがより保守制御構造に吹き出さあなたの文字列比較のすべてを持つスキップや機関にあなたのイベントをマップする連想配列を作成するかもしれません。あなたがこれを行うことができますいくつかの方法がありますが、ここでは単純なものです:

<?php 
$eventAgencyMap = [ 
    'Tornado Watch'    => 'NWS Storm Prediction Center', 
    'Severe Thunderstorm Watch' => 'NWS Storm Prediction Center', 
    'Hurricane Watch'   => 'NWS National Hurricane Center', 
    'Tropical Storm Watch'  => 'NWS National Hurricane Center' 
]; 

$agency = (array_key_exists($event, $eventAgencyMap)) ? $eventAgencyMap[$event] : $wfo; 
+0

ああ、それはロジックを整理する方法で、それは完全に私をスリップして、素晴らしいです。 PHPが再び私をだました。ありがとう! – Texan78

1

私はとしてIMOそれはもう少しクリーンかつ少ないコードであるロブのソリューションを使用していました。それで、私はこの解決法も捨てたいと思っていました。誰かが私が考えていたswitch文について言及しました。だから私はロブの答えを見て、これは私のためにうまくいった前にそれを試した。それはロブが選択された解決策でなければならないにもかかわらず、代わりの方法です。

$agency = ''; 

      switch($event) 
{ 

       case 'Tornado Watch': 
        $agency = 'NWS Storm Prediction Center'; 
           break; 
       case 'Severe Thunderstorm Watch': 
        $agency = 'NWS Storm Prediction Center'; 
           break; 
       case 'Hurricane Watch': 
        $agency = 'NWS National Hurricane Center'; 
           break;    
       case 'Tropical Storm Watch': 
        $agency = 'NWS National Hurricane Center'; 
           break; 
       case 'Flash Flood Watch': 
        $agency = $wfo; 
           break; 

} 
+0

私はこの方法を好むと思いますが、あなたがケースを逃した場合のためにスイッチのステートメントでデフォルトを持つことを常にお勧めしますが、 – Kvothe

+0

あなたは有効で有効なポイントを作成します。私の場合は、array_filterも使用していますが、私はすでにそれらが唯一のケースであることを知っています。さて、あなたはそれを言いますが、私は最後のステートメントをデフォルトとして使うことができると思います。 – Texan78