web-dev-qa-db-ja.com

変数が空かどうかを確認

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行(おそらく配列ですか?)に書き込むことは可能ですか?
33
ZeroSuf3r

変数が実際NULLであるかどうかをテストする場合は、ID演算子を使用します。

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

変数が設定されていないかどうかを確認する場合:

!isset($user_id)

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

empty($user_id)

変数が空の文字列ではないかどうかをテストする場合は、!でも十分です:

!$user_id
83
Rob W

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

if (!$var){ }

または:

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

または:

if (empty($var)){ }

宣言されているかどうかは、次のコマンドで確認できます。

if (!isset($var)){ }

PHPは0(整数)と ""(空の文字列)およびfalseを "空"と解釈することに注意してください-そして、異なるタイプであることを嫌い、これらの特定の値はPHPによって同じと見なされます。 $ varが決して設定/宣言されないか、または$ var = 0または$ var = ""として宣言されるかは関係ありません。そのため、データ型に関して比較する===演算子を使用して比較することがよくあります。 $ varが0(整数)の場合、$ var == ""または$ var == falseは検証されますが、$ var === ""または$ var === falseは検証されません。

ここで、空の関数と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';
    }
    ?>
1
user3470929

empty()は、!$user_id他の場所で提案されたとおり:

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

注目に値する-そして、私はこれを9年近くPHP変数をチェックする最良の方法が存在するというコーディングの後にempty()関数を使用することで発見しました。エラーを生成し、それらをオフにしても-PHPはまだそれらを生成します!empty()ただし、変数が存在しない場合はエラーを返しません。したがって、正しい答えはnullかどうかを確認するが、次のことを行う

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

PHP manual

変数が存在しないか、値がFALSEの場合、変数は空と見なされます

ここで便利なnullであるのとは対照的に!

1
Antony

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

if (is_null($value)) {
   $value = "MY TEXT"; //define to suit
}
0
user5340092

他の反応のため、これに答えざるを得なかった。より多くのベースをカバーするため、可能であればempty()を使用します。今後ともよろしくお願いします。

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

0
Mike Q

isset()ルーチンを使用できます。

また、次のようなis_type()関数の範囲を参照することもできます。

is_string()、is_float()、is_int()など、さらに具体的にテストする

0
Vijeenrosh P.W

1。

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

2。いいえ。実際にそのような構成を記述する理由を理解できませんでした。

3。すべての値を配列に入れます。たとえば、$ ar ["user_id"]などです。

0
Dmitry Zaytsev

「空」の意味を定義してください。

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

0
Alnitak

PHPで変数が空かどうかを確認するための最良かつ最も簡単な方法は、単にempty()関数を使用することです。

if empty($ variable)then ....

0
user1445657
<?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
vitzma16