2012-08-30 34 views
6

我組建了一個腳本,通過幾個$ _GET變量,然後在腳本中用於計算報價的目的拉等

的噩夢我例如?var1 = 500 & var2 = & var3 =是,其中var2是culprint的存在。

根據所有的$ _GET變量是否有值,我會採取相應的措施。

我研究以及與此想出了作爲一個選項:

<?php 
foreach($_GET as $name => $value) { 
    if ($value == "") { 
     $proceed = 0; 
    } else { 
     $proceed = 1; 
    } 
} 
?> 

我使用$進行此刻只是爲了測試目的echo'ing簡單的文本位。

這不工作,我已經考慮isset,但我相信這兩個選項是在這種情況下無用。我已經閱讀了許多來源,$ _GET參數沒有給定值默認爲「',所以我很困惑,爲什麼這不起作用。

我不能使用這裏由於這樣的事實,有時將參數設置爲0。

不用說,我已經印刷的$ _GET內容,並得到滿意的結果,所以數據都好。

任何幫助非常感謝。

+0

foreach with $ _GET - >壞主意。 – Mahn

+4

@Mahn,爲什麼? – MacMac

+0

['empty()'](http://php.net/manual/en/function.empty.php) – PeeHaa

回答

2

缺失 parameters don出現在$_GET。說出查詢字符串看起來是這樣的:

index.php?page=5 

如果預期的id參數,它不會自動地將在$_GET露面。你只需要使用isset(和一個空字符串)檢查時使用它們 - 不是先發制人。那根本行不通。

0

這樣的事情呢?

<?php 
$expectedVars = array('var1', 'var2'); 

foreach($expectedVars as $key => $val) { 
    if($_GET[$val] == "") { 
     $proceed = 0; 
    } else { 
     $proceed = 1; 
    } 
} 
?> 
+0

,會試試看! – davetgreen

0

如果 IM正確讀你的問題你看太:

檢查參數設置砥部並具有價值,而且使用foreach循環_GET爲方便起見,$。

也許,製作你想要的參數數組,然後循環,並檢查$ _GET是否包含相同的鍵。

<?php 
$allowed = array('var1','var2','var3'); 
$error = array(); 

foreach($allowed as $key) { 
    if(array_key_exists($key,$_GET)) { 
     //Validate, value must contain t least 1 len 
     if(strlen($_GET[$key]) >= 1){ 
      $$key = $_GET[$key]; 
     }else{ 
      //Assign an error if param has a blank value 
      $error[$key] = $key." parameter must contain a value"; 
     } 

    }else{ 
     //Assign an error if params not been passed to the url 
     $error[$key] = $key." parameter not set"; 
    } 
} 


if(!empty($error)){ 
    //A Params missing or has no value, dont continue 
    echo 'All parameters required!<br />'; 
    foreach($error as $value){ 
     echo '* '.$value.'<br />'; 
    } 
}else{ 
    //No errors do something 
    echo 'var1 is set: '.$var1; 
    echo 'var2 is set: '.$var2; 
    echo 'var3 is set: '.$var3; 
} 
?> 
+0

本質上我想檢查是否有任何參數是空字符串。表單傳遞數據的方式可以確保參數在字符串中,而不管它是否已被填寫:但是一些參數是必需的,因此對於那些特定的參數,我想檢查一下任何相等的「」。 – davetgreen

0

您可以使用下面的代碼來定義和變量列表設置爲通過$ _GET如果存在傳遞的值,或爲空字符串,如果或者不存在或已在查詢字符串沒有價值:

$getvars = array(); 
$expectedvars = array(     // define variables to be set from $_GET 
    'var1', 'var2', 'var3', 'var4', 'var5', 
); 

foreach($_GET as $key => $value) {  // store all $_GET variables present 
    $getvars[$key] = $value;    // in an associative array 
} 

foreach($expectedvars as $variable) {   // now create all vaariables, 
    ${$variable} = (isset($getvars[$variable])) // if value was passed in url 
    ? $getvars[$variable]      // then set to that value 
    : '';          // otherwise set as empty string 
} 

這將創建具有適當值的變量$ var1,$ var2,$ var3,$ var4和$ var5。

+0

有趣的做法!也會試試這個以及謝謝! – davetgreen