2017-11-07 11 views
1

私のテーブルのフィールドステータスはNULLです[デフォルト]、または0または1です。それから、PHP var $ statusに割り当てます。値がNULLの場合、アイコンが表示されず、値が0の場合はグレーのチェックイメージが表示され、値が1の場合は緑のチェックイメージが表示されます。php nullが0、ゼロが0である必要があります

問題は、NULL値はグレーのチェック画像を示し、0はチェック画像を表示しません。どういうわけかNULLと0は同じですが、一方向にしかありません。私が意味するものは、varがヌルではなくヌルではなくヌルであるが、ゼロでないかどうかを条件付きでテストするかどうかにかかわらず、それらは誤って解釈されます。それは紛らわしい。 NULLを維持し、0を別個に区別するための簡単なストレートフォワード方法がなければなりません。私は値つかむ:

$status = $Card['status']; //from above array. 
    if ($status == 1) { 
     $status = '1'; 
    } else if ($status == 0) { 
     $status = '0'; 
    } else if ($status === NULL) { 
     $status = 'NULL'; 
    } 

その後、私はしようとしていますすべてで、灰色、緑、またはnoneのいずれかの画像を表示するが、この:私は「」の値の周りには必要ありません知っている

if ($status == '1') { 
     echo "<img src='../images/status_check_green.png' />"; 
    } else if ($status == '0') { 
     echo "<img src='../images/porc_check_gray.png' />"; 
    } else if ($status == 'NULL') { 
     echo "<img src='' />"; 
    } 
} 

しかし、私は有効な比較を強制するためにすべてをリテラル化しようとしています。誰かが自分のコードを解読しようとする必要はないでしょう。 NULLを維持する方法と0を分ける方法を解明することです。それは私がここで何か基本的なものを欠いているようなものです。 btw、私はPHPのvarとjs varを詰める、それは正しい値を取得します。彼らはちょうど私がそれらを必要とするように比較に従っていない。

アイデア?

+2

いつも '==='を使うか、 '0'をチェックする前に' NULL'をチェックすることができます。 –

+1

'空'と 'is_null'おそらく助けるかもしれませんか? – RamRaider

答えて

5

HIあなたの問題は、手続きの順序であるか(あなたがfalseをキャッチしたい場合に応じて)あなたは、その条件のためにtrueを返します0ヌルの===でチェックタイプではないので0をチェック

if ($status == 1) { 
    $status = '1'; 
} else if ($status == 0) { 
    $status = '0'; //<--- this runs on null because (null == 0) is true 
} else if ($status === NULL) { 
    $status = 'NULL'; //<--- this block is un-reachable 
} 

を入力していません。

$status = null;

http://sandbox.onlinephpfunctions.com/code/1f3dd9d83d0026aa0f682b61bed2ba858ae285aa

出力使用してそしてたとえば、このサンドボックスを参照してください:あなたが使用して、ここで見ることができるようにあなたがこの

if ($status == 1) { 
    $status = '1'; 
} else if ($status === 0) { 
    $status = '0'; 
} else if ($status === NULL) { 
    $status = 'NULL'; 
} 

に変更した場合

'0' 

をの同じ設定

http://sandbox.onlinephpfunctions.com/code/d86b0c60c06338d2d6ee1c1fa9d3fa7e08a22663

出力

'NULL' 

それはそれらを切り替えることであろう修正する他の方法はとても多くの特定のものが最初です。それ以上のブロックが最初にそれをキャッチするよう次に

if ($status == 1) { 
    $status = '1'; 
} else if ($status === NULL) { 
    $status = 'NULL'; 
} else if ($status == 0) { //I would prefer if(!$status){ but I'm lazy 
    $status = '0'; 
} 

0falseなど0なくnullをキャッチします。あなたはここに、この最後の1

'NULL' 

乾杯を出力

http://sandbox.onlinephpfunctions.com/code/3028f5826dcede29b14dd8cfc03618ea5830c12c

を見ることができます!

+0

私はあなたの最初の例と魅力のように働くものを使用しました!私は1 ==>緑色のチェック、0 ==>グレーチェック、NULL ==>チェックなしのフローが好きです。微妙で崇高なタイプのチェックがとても重要です。あなたの反応は非常に素晴らしく、徹底的でした - ありがとうございました! – dcparham

+0

確かに、私は助けてうれしいです。 – ArtisticPhoenix

関連する問題