我有一些变量有时可能是空的,有时它们可能不是......防止这些错误发生的最佳方法是什么?
Notice: Undefined variable:
$results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']);
$ _GET中的任何一个都可以随时为空。所以错误会弹出很多
答案 0 :(得分:3)
你需要先用空函数验证它。
$search = !empty($_GET['search'])?$_GET['search']:"";
$criteriaId = !empty($_GET['criteriaId'])?$_GET[criteriaId]:"";
$dateEntered = !empty($_GET['dateEntered'])?$_GET['dateEntered']:"";
$state = !empty($_GET['state'])?$_GET['state']:"";
$results = searchOrders($search, $criteriaId, $dateEntered, $state);
答案 1 :(得分:1)
快速而肮脏的方法是使用@
运算符:
$results = searchOrders(@$_GET['search'], @$_GET['criteriaId'], @$_GET['dateEntered'], @$_GET['state']);
但是我建议不要使用它,因为它会导致糟糕,邋code的代码。您可以将isset
用于变量,或者在数组的情况下使用如下构造:
$vars = $_GET + array(
'search' => '',
'criteriaId' => '',
'dateEntered' => '',
'state' => '',
);
// Alternatively, use $_GET += array(...)
$results = searchOrders($vars['search'], $vars['criteriaId'], $vars['dateEntered'], $vars['state']);
答案 2 :(得分:0)
查看if(isset($var) && !empty($var))
答案 3 :(得分:0)
例如:
if (empty($var) && isset($var)) {
echo '$var is either 0, empty, or not set at all';
}
答案 4 :(得分:0)
答案 5 :(得分:0)
常见问题,通常用
解决if(isset($_GET['search'])) {
$results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']);
}
现在只有搜索可用才会运行。
如果您想了解有关isset函数的更多信息,请查看: http://php.net/manual/en/function.isset.php
答案 6 :(得分:0)
foreach($_GET as $key){
if(isset($key)){
$results = searchOrders($key);
}
}
答案 7 :(得分:0)
您的searchOrders
函数是否支持空参数?如果是这样,您只想删除警告/错误消息,只需将@
放在
$results = @searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']);
如果你的函数不支持空参数并且它们都是必需的,你需要在
之前检查它们if( isset($_GET['search']) && !empty($_GET['search'])
&& isset($_GET['criteriaId']) && !empty($_GET['criteriaId'])
&& isset($_GET['dateEntered']) && !empty($_GET['dateEntered'])
&& isset($_GET['state']) && !empty($_GET['state']))
$results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']);
如果您多次使用这些变量,并且不想每次都使用if
或@
,则可以在脚本开头的某处检查它们:
$_GET['criteriaId'] = (isset($_GET['criteriaId']) & !empty($_GET['criteriaId'])) ? $_GET['criteriaId'] : null;
您可以将此用于所有变量,并将null
替换为应分配给变量的默认值。