重複の可能性:
$ _ GETが空かどうかを確認する方法は?
URLにデータが含まれていることを確認しようとしていますが、現在これを行うために使用しているステートメントはですが$_GET
、URL?var=foo&biz=bang
にデータがないか、どこにも存在しない場合でも、trueが返されます。変数は常に設定されていると思いますが、これを確認するにはどうすればよいですか?if
isset($_GET) //Do something
?
&
$_GET
重複の可能性:
$ _ GETが空かどうかを確認する方法は?
URLにデータが含まれていることを確認しようとしていますが、現在これを行うために使用しているステートメントはですが$_GET
、URL?var=foo&biz=bang
にデータがないか、どこにも存在しない場合でも、trueが返されます。変数は常に設定されていると思いますが、これを確認するにはどうすればよいですか?if
isset($_GET) //Do something
?
&
$_GET
$ _GETは常にphpで 設定されているため(Webサーバーで実行する場合)、本当に知りたいのは「そこに何かありますか?」です。
使用したい:
if ($_GET) {
}
これが機能するのは、$ _ GETが配列であり、空の配列が評価されfalse
、入力された配列がであるためですtrue
。
アップデート
phpunit
上記の方法は、テスト容易性とCLI実行コマンド( 、 )に非常に悪影響を与えるため、使用しなくなりましたartisan
。
私は今、常に配列をチェックisset()
しています。$_GET
また、私は通常、if
-php内の配列に割り当て、これらの式を割り当てられた変数の値に評価します。
フレームワークに「安全な配列アクセス」機能がある場合は、常にそれを使用する必要があります。フレームワークに「安全なGET関数」がある場合は、さらに優れています。フレームワークを使用していない場合、またはフレームワークにこれらのヘルパー関数が含まれていない場合は、自分で作成する必要があります。
// example with "safe array access"
if (isset($_GET) && $value = safe_array($_GET, 'key')) {
// do something with $value
}
// example with "safe GET function"
if ($value = safe_input_get('key')) {
// do something with $value
}
if(!empty($_GET))
{
// do something
}
get配列が設定されているかどうかを通知する必要があります
0、0.00、falseなどが返されるため、使用empty()
すると問題が発生する可能性があります(http://php.net/manual/en/function.empty.php)true
考えられる回避策:
<?php
function is_blank($value) {
return empty($value) && !is_numeric($value);
}
if (!is_blank($_GET)){
... do your thing ...
}
?>
または特定の投稿値を確認しますisset($_POST['value'])