我有一些變量,有時可能是空的,有時他們可能不是......什麼是防止這些錯誤發生的最佳方法?變量偶爾會清空如何防止未定義的變量錯誤?
Notice: Undefined variable:
$results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']);
任何$ _GET都可以在任何時候爲空。因此,錯誤會彈出很多
我有一些變量,有時可能是空的,有時他們可能不是......什麼是防止這些錯誤發生的最佳方法?變量偶爾會清空如何防止未定義的變量錯誤?
Notice: Undefined variable:
$results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']);
任何$ _GET都可以在任何時候爲空。因此,錯誤會彈出很多
您需要先用這樣的空函數驗證它。
$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);
這樣做,我應該實際完成它像這樣開始。謝謝。 – Butterflycode
檢查與if(isset($var) && !empty($var))
普遍的問題,與
if(isset($_GET['search'])) {
$results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']);
}
常用解決現在只能當搜索可用時,它將會運行。
如果您想了解的isset函數這裏看看更多的信息: http://php.net/manual/en/function.isset.php
foreach($_GET as $key){
if(isset($key)){
$results = searchOrders($key);
}
}
貴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
替換爲應分配給變量的默認值。
快速和骯髒的方法是使用@
操作:
$results = searchOrders(@$_GET['search'], @$_GET['criteriaId'], @$_GET['dateEntered'], @$_GET['state']);
不過,我會建議不要使用這個,因爲它會導致不好的,草率的代碼。您可以使用isset
變量或數組的情況下使用構造是這樣的:!
$vars = $_GET + array(
'search' => '',
'criteriaId' => '',
'dateEntered' => '',
'state' => '',
);
// Alternatively, use $_GET += array(...)
$results = searchOrders($vars['search'], $vars['criteriaId'], $vars['dateEntered'], $vars['state']);
檢查空()方法的話..如果是空的()做到這一點要不然這 – swapnesh
看看在http:// techtalk .virendrachandak.com/php-isset-vs-empty-vs-is_null /針對與您的問題相關的不同功能 - isset(),empty(),is_null()' – Floris