2009-04-20 23 views
0

私はデータベースから$ subcatにfeildを取得しています。 $ subcatがnullの場合、カテゴリに追加するフォームを表示する必要があります。そうでなければ、カテゴリを表示します。 $ subcatが正しく存在し、正しく検索されています。 nullまたは文字列のいずれかです。if else withデータベースの変数の条件

if ($subcat != null) { 
$showCategory = "<p><strong>Auction Category: </strong> ".$tmp['subcat']; 
} 
else 
{ 
$showCategory = "<form name=\"categoryForm\"> 
    <input name=\"radiobutton\" type=\"radio\" value=\"fakeapproved\" />Fake (Approved)<p> 
    <input name=\"radiobutton\" type=\"radio\" value=\"fakesuspected\" />Fake (Suspected)<p> 
    <input name=\"radiobutton\" type=\"radio\" value=\"keyword\" />Forbidden Keywords<p> 
    <input name=\"radiobutton\" type=\"radio\" value=\"parallelimport\" />Parallel Imports 
    <input name=\"Submit\" type=\"submit\" value=\"Update\" onclick=\"handleClick(".$pk.");return false\"/> 
</form>"; 
} 

ただし、すべてがフォームです。 $ subcatが間違いなくnullであることは間違いなく、フォームが引き続き表示されます。私はelse節を入れ替えようとしましたが、$ subcatがverifiably nullだったとしてもカテゴリは表示されました。あなたはis_null

を使用されている変数のnullをチェックすることができるPHPで

+0

$ subcatがnullであると想定される場合、$ subcatのvardumpを与えることはできますか? –

答えて

2

がnull作品です。変数が空の文字列( "")、ゼロ、偽、または空の配列の場合、is_nullはfalseと評価されます。これはやや直感的ではないので、私は常にempty()を代わりに使用することを提案します。

empty()は、0、空の文字列、空の配列、真偽値、またはNULLを返します。したがって、試してみてください:

変数がNULLの場合にのみ、何かしたいことが100%確実であれば、is_nullを使用してください。クラスメソッドを予期せずに呼び出すかどうかを確認するのが一般的には空です。

編集:ああ、ときどきデータベースからNULLを取得すると、実際のNULL値と同じではない文字列 "NULL"が返されます。それはあなたが使用しているデータベースと、最初にデータベースに値をどのように保存したかによって異なります。これは見逃しがたいもので、永遠に理解することができます。 subcat変数をvar_dump()して、 "NULL"文字列(4)か文字通りNULL値かどうか確認してください。これは、あなたがコメントで言及したあなたの他のコードセグメントの予期しない動作を説明することができます。

+0

まあ、$ subcatは文字列(0) ""を返します。私は他のクラスで== nullを使用していますが、同じ文字列が返されて正常に動作します。奇妙な私はあなたのexmapleごとに空を使用するように切り替えましたが、問題はまだ発生し、短い$ showCategoryは常に選択されています。 –

+1

subcatが空文字列の場合、空文字列は常にtrueに評価されます。 subcat(実際のサブカテゴリ)に値がある場合のみfalseになります。あなたはDBからの行を使って、空ではない文字列をsubcatとしてテストしようとしましたか? nullキーワードを評価するために==演算子を使用する経験はありませんが、私はそれを示唆していません。その理由から、empty()およびis_null()ネイティブ関数が明示的に存在すると考える十分な理由があります。 –

+0

私はsubcatが 'fake'に設定されているレコードについてテストしています。私はそのカテゴリーをページの上部に印刷しています。空のサブカテゴリ、またはサブカテゴリのテキストを表示します。どちらの場合も、showCategoryは短いhtmlに設定されます。 –

0

ので使用:変数が実際にNULLであれば

if (!is_null($subcat)) { 
+0

私は別のクラスで同じロジックを使用しており、完全に動作します。それはなぜここで働いていないでしょうか? –