web-dev-qa-db-ja.com

PHP

Nullに設定された既存のクエリ文字列パラメーターと欠落しているパラメーターを区別できるようにしたい。したがって、質問の部分は次のとおりです。

  • クエリ文字列にパラメータexistsがあるかどうかを確認するにはどうすればよいですか?
  • クエリ文字列でnull値を渡すための確立された方法は何ですか? (例:param = nullまたはparam =(nothing))

ありがとう

20
Yarin

isset() および empty() を使用します

if (isset($_REQUEST['param']))
{
  // param was set in the query string
   if(empty($_REQUEST['param']))
   {
     // query string had param set to nothing ie ?param=&param2=something
   }
}
33
Byron Whitlock

または array_key_exists

if(array_key_exists("myParam", $_GET)) {

}

空の値をサーバーに渡すための「規約」に熱心ではありませんでした。たとえば、変数の存在をテストしてから、それらをトリミングして空かどうかをテストすることに慣れています。

12
karim79

$_GETおよび$_POSTに格納されている値は、実行時に明示的に設定されていない限り、文字列または配列のみです。 query=stringのクエリ文字列がある場合、値は"string"です。代わりに次を使用すると、query=nullの値は"null"になります。そのため、文字列であることに注意してください。

送信する場合:query=、値は""または空の文字列になります。 issetemptyの間の differences に注意してください。値がnullでない場合、issetはtrueになりますが、値がemptyと評価された場合、falseはtrueになります。したがって、""bothissetemptyの両方に対してtrueになります。

クエリ文字列パラメータが"null"の文字列値に設定されているかどうかを確認するだけの場合は、$_GET['query']=='null'を確認するだけです(確認前に文字の大文字と小文字を調整することができます)。

4
zzzzBov

2つではなく1つのifステートメントで:

if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
    $name= $_REQUEST['name'];
}
2
MatthewK