変数検証用の `sisset()`、 `empty()`、 `is_null()`のニュアンス
ISSET()は、変数がnullではなく宣言されているかどうかを確認し、空の文字列に真のものを返します。それを使用して、$ _POST ['Email']などのフォーム入力の検証など、変数が存在することを確認し、設定されています。 2。empty()は、ユーザーロジックの意味で値が「空」であるかどうかを判断し、「、0、 '0」、null、false、[]、および0.0を真に返し、未定義の変数には安全です。オプションのユーザー入力フィールドなど、「0」または0を無効または提供されていないように扱うときに使用します。 3。IS_NULL()は、変数が存在し、明示的にnullである場合にのみTRUEを厳密に返しますが、PHPの動作により未定義の変数に対して誤解を招くように返します。変数が存在することが保証されている場合にのみ使用し、nullを他のfalsy値と区別する必要があります。未定義またはnullを安全に確認するには、isset()と組み合わせて()if(!isset($ var)|| $ var === null)、および厳密なnullチェックの場合は、if(sisset($ var)&& $ var === null)を使用します。
PHP、 isset()
、 empty()
、およびis_null()
の変数を検証する場合、一般的に使用されますが、それらは異なって振る舞い、しばしば誤解されます。特にユーザー入力、フォームデータ、またはAPI応答を扱う場合、間違った結果を選択すると、予期しない結果が発生する可能性があります。ニュアンスを分解して、それぞれをいつ使用するかを正確に確認しましょう。

1. isset()
本当にチェックします
isset()
変数がnull
ではなく宣言されているかどうかを決定します。
$ var = null; Echo Isset($ var)? 「はい」:「いいえ」; //出力:いいえ $ var = ''; Echo Isset($ var)? 「はい」:「いいえ」; //出力:はい
false
を返す場合:- 変数は存在しません。
- 変数は存在しますが、
null
が割り当てられます。
- 空の文字列、
0
、'0'
、false
、要素のない配列(null
または未定義を除くもの)にtrue
を返します。
?変数が設定されており、意味のある値があるかどうかを知りたい場合はisset()
を使用します(その値が論理的に「空」であっても)。

一般的なユースケース:
$_POST['email']
がフォームで送信されたかどうかを確認します。
2。 empty()
「空」を解釈する方法
empty()
変数がゆるいユーザーロジックな意味で「空」と見なされる場合にtrue
を返します。

これらの値はすべてempty()
に対してtrue
を返します:
-
''
(空の文字列) -
0
-
'0'
-
null
-
false
-
[]
(空の配列) -
0.0
var_dump(empty( '0')); // true - しばしば驚くべきことです! var_dump(empty([])); // 真実 var_dump(empty(null)); // 真実
? '0'
や0
ような値が「提供されていない」または「無効」として扱われる必要があるユーザー入力をチェックしている場合はempty()
を使用します。
注:
empty()
変数が存在しない場合、変数を直接使用しない場合、警告を生成しません。したがって、未定義のVARにとって安全です。
3.いつ使用するかis_null()
is_null()
は厳格です。変数が存在し、明示的にnull
である場合にのみtrue
を返します。
$ var; var_dump(is_null($ var)); // true(暗黙のヌル) $ var = null; var_dump(is_null($ var)); // 真実 $ var = ''; var_dump(is_null($ var)); // 間違い
しかし:
var_dump(is_null($ undefined)); // true - 未定義であっても!
待ってください - はい、 is_null()
変数が存在しないときにPHPがデフォルトでnull
を渡すため、未定義の変数に対してtrue
を返します。
⚠️so: is_null()
、既に宣言されていることがわからない限り、未定義の変数をチェックするのに安全ではありません。
? is_null()
を使用して、変数が存在し、 null
他のfalsy値と区別する必要があると確信している場合にのみ使用します。
一目で重要な違い
価値 | isset() | empty() | is_null() |
---|---|---|---|
null | 間違い | 真実 | 真実 |
'' | 真実 | 真実 | 間違い |
'0' | 真実 | 真実 | 間違い |
0 | 真実 | 真実 | 間違い |
false | 真実 | 真実 | 間違い |
[] | 真実 | 真実 | 間違い |
未定義 | 間違い | 真実 | 真実* |
*
is_null($undefined)
はtrue
を返しますが、変数が存在しないため、それは誤解を招くものです。
ベストプラクティスと推奨事項
isset()
を使用して、変数($_GET['id']
など)が提供されたかどうかを確認します。- seald
empty()
を使用して、'0'
または0
欠落している(たとえば、オプションのフィールド)として扱う必要があるユーザー入力を使用します。 - comation変数が存在することが保証されているコンテキストにない限り、
is_null()
を避けてください。 - ?厳格なチェックについては、ツールを結合します。
if(Isset($ var)&& $ var === null){ / *明示的にnull * /}
- ?§未定義またはnullを安全に確認するには:
if(!isset($ var)|| $ var === null){ / * setまたはnull * /}
基本的に、選択はあなたが検証しようとしていること、つまり存在、使いやすさ、または厳格な無効性に依存します。それらを混ぜると、特に
'0'
が有効なデータ(ゼロ評価など)が有効なデータがある場合、バグにつながります。違いを知り、エッジのケースをテストします。以上が変数検証用の `sisset()`、 `empty()`、 `is_null()`のニュアンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

PassbyValueemeansAcopyofthedataispassed、sichangesinsisidetheThectiondonotaffecttheoriginalvariabuiable、AsseenincwithitiveTorpithimmutabletypes.2.PassbyReferencemeansemeansemeansemeansemeansemeantsefunction receiveSediveationiveationiveSeorignisinisinisinisisinisisiNisinisisinisinisinisinisinisinisinisis

phpsuperglobalsinclude $ _get、$ _ post、$ _ request、$ _ session、$ _ cookie、$ _ server、$ _ files、$ _ env、および$ globals、各セルシングディンティックプルーズsbeyondjusthandlingformdata; theyablestatemanagement、serverInteraction、andenvironmentaccess.1。$ _ requestcombines $ _get、$ _ post、

変数変数は、$$ var構文を介して別の変数の名前として1つの変数の値を使用します。 2。たとえば、$ myvarが「hello」の場合、$$ myvarは$ helloに相当し、値を割り当てることができます。 3.実際のアプリケーションでは、フォームデータを動的に処理するために使用できます。たとえば、$ _POSTをforeachで移動したり、$$キーを使用して対応する変数を作成したりできます。 4.読みやすさの低さ、セキュリティの高いリスクが高く、特にユーザー入力のための$$の使用を回避することなどの問題があります。 5.動的変数を作成する代わりに、データを$データアレイに保存するなど、動的変数を作成する代わりに、配列またはオブジェクトを使用することをお勧めします。 6。$ {$ var}の使用curlyブレース構文を使用すると、特に複雑なシナリオでコードの明確さを改善できます。可変変化

plopertiesInphp7.4 approaddirecttypedeclaration forclassporties、改善可能性、idesupport、andcodeclarity;

theglobalkeywordunncondallyは、debug、andmentainを使用することを不必要に使用します。代わりに、functionparametersandreturnvaluestopassdataexplicty.2.replaceglobalvariablespurefurefurnctionsを使用して、depuntionsutiontuntututututsiを使用してください

aphpvariaible'slifecyclebeginswithmoryallocationviazvalcreation、タイプ、referencecount、andreferenceflag.2.whenvariablessignedorshared、phpusesreferencecountingandcountingandcopy-on-writeTeTeToptimizeMoryasage、juthing-durplicationagedaTawhnedationage

constantsCannotBeChangedafterDefinition、whorvariablescan; 1.variablesstartwith $、aremutable、scoped、andidealfordynamicdata;

Isset()checksifavariableisdeclaredandnotnull、returningtrueemptystrings、0、 '0'、false、およびandemptyArrays; useittoconfirmavariaiainiaiainiaiveExistasnhasbeensetなど、$ _post ['email']
