2012-01-08 21 views
26
if ($user_id == NULL || $user_name == NULL || $user_logged == NULL) { 
    $user_id = '-1'; 
    $user_name = NULL; 
    $user_logged = NULL; 
} 
if ($user_admin == NULL) { 
    $user_admin = NULL; 
} 
  1. 最短の方法はありますか?
  2. もし私が正しい場合は、is_nullでテストする必要がありますか?
  3. NULLを繰り返さずに$user_id,$user_nameおよび$user_loggedを1行で書き込むこともできますか?
+0

*(推奨)* http://stackoverflow.com/questions/381265/better-way-to-check-variable-for-null-or-empty-string – Gerep

+0

私はあなたが関数を作成することができると思いますそのために... – Gerep

答えて

59

あなたは変数が本当にNULLであるかどうかをテストしたい場合は、アイデンティティ演算子を使用します。

!isset($user_id) 
を:あなたは、変数が設定されていないかどうかを確認したい場合は

$user_id === NULL // FALSE == NULL is true, FALSE === NULL is false 
is_null($user_id) 

または変数が空でない場合は、空の文字列、0、..:

empty($user_id) 

あなたは変数が空の文字列でないかどうかをテストしたい場合は、!も十分であろう。

!$user_id 
+1

'isset()は引数の数に制限はありません。 – DaveRandom

+0

彼は '=='の上に '==='ではなく '==='を使用しているので、効果的に実行されるのは 'if(!$ var ||!$ var ...' – DaveRandom

+2

です。 'isset'](http://php.net/manual/en/function.isset.php)、[' is_null'](http://php.net/manual/en/function.is-null.php) 、['empty'](http://php.net/manual/en/function.empty.php)コードで判断すると、変数は文字列でなければならないと仮定していますので、 $! –

1

empty()は、他の場所で示唆したように!$user_idのチェックに代わるものとして、少し短いです:

if (empty($user_id) || empty($user_name) || empty($user_logged)) { 
} 
6

これは、設定されていない(または空の)かどうかは、さまざまな方法で確認できます。

if (!$var){ } 

または:

if ($var === null){ } // This checks if the variable, by type, IS null. 

または:

if (empty($var)){ } 

それがで宣言されたかどうかを確認することができます:

if (!isset($var)){ } 

は、PHPは、0(整数)を解釈することに注意してくださいと""(空文字列)、falseは "空" - そして、diこれらの特定の値はPHPによって同じものとみなされます。 $ varが決して設定/宣言されていない場合や、$ var = 0または$ var = ""として宣言されている場合は問題ありません。したがって、データ型に関して比較する===演算子を使用して比較することがよくあります。 $ varが0(整数)の場合、$ var == ""または$ var == falseが検証されますが、$ var === ""または$ var === falseは有効になりません。

+1

'!isset($ var)'は変数が定義されていないかどうかをチェックし、空でない場合はチェックしません。 – noob

+1

真実と固定:) –

0

1.

if(!($user_id || $user_name || $user_logged)){ 
    //do your stuff 
} 

2。いいえ、私は実際にそのような構造を書く理由を実際に理解していませんでした。

3。すべての値を配列に入れます(例:$ ar ["user_id"]など)。

0

"空"と定義してください。

私が通常使用するテストはisset()です。

+0

@micha従って私の最初の行 - "空"は多少あいまいです。ほとんどの場合、 – Alnitak

+0

イセットセットは吸う。 –

0

あなたはisset()ルーチンを使用できます。

もadditionalyあなたはさらにspecificalyかどうかを確認するために

0

最善かつ最も簡単な方法をテストするために

)(IS_STRING、is_float()、is_int()などのようなis_type()関数の範囲を参照することができますPHPで変数が空の場合は、単にempty()関数を使用するだけです。空($変数)の場合

その後、 ....

以下このリンクは、これはその全体がどのように動作するかを示しています。

ここ

http://www.allthingsdiscussed.com/More/How-to-check-if-a-variable-is-empty-in-PHP.php

0
<?php 

$nothing = NULL; 
$something = ''; 
$array = array(1,2,3); 

// Create a function that checks if a variable is set or empty, and display "$variable_name is SET|EMPTY" 
function check($var) { 
    if (isset($var)) { 
     echo 'Variable is SET'. PHP_EOL; 
    } elseif (empty($var)) { 
     echo 'Variable is empty' . PHP_EOL; 

    } 

} 

check($nothing); 
check($something); 
check($array); 
+0

あなたの答えに詳細を提供してください。 – Parixit

1

私はどのように説明しました空の関数とissetの関数は適切なis_null関数を使用することもできるものを使用してください

<?php 
    $val = 0; 
    //evaluates to true because $var is empty 
    if (empty($val)) { 
     echo '$val is either 0, empty, or not set at all'; 
    } 
    //evaluates to true because $VAR IS SET 
    if (isset($val)) { 
     echo '$val is set even though it is empty'; 
    } 
    ?> 
0

それは注目に値する - 私は、PHPのコード化が9年近く経ってから、変数をチェックする最良の方法はempty()関数を使用していることを発見したに過ぎません。これは、エラーを生成しないので、それらをオフにしても、PHPがそれを生成するためです。変数が存在しない場合、empty()はエラーを返しません。だから私は、その値がFALSEと等しい場合、それが存在しない場合、または正しい答えは空とみなされるが、そのヌルには、以下の

if (!empty($var) && is_null($var)) 

ノートにPHPマニュアル

変数を行うためにかどうかをチェックすることはないと信じて

ここで便利なヌルとは対照的に!

0

他の応答のためにこれに答えるように強制されました。できるだけ多くの基底をカバーするので、空の()を使用してください。将来、あなたは私に感謝します。

たとえば、isset()& & strlen()の代わりにempty()を使用する必要があります。これは空のようなものだと考えてください!isset($ var)|| $ var == false

0

ヌル値を確認するには、以下に示すようにis_null()を使用できます。

if (is_null($value)) { 
    $value = "MY TEXT"; //define to suit 
} 
関連する問題