2012-03-29 221 views
0

所以,這一切都源自不想檢查每個POST在一個巨大的梗如果用噸與運算的語句,像這樣:創建一個從字符串命名變量或創建一個字符串從一個變量命名

if(isset($_POST[$question], $_POST[$choice1], $_POST[$choice2], $_POST[$choice3], $_POST[$choice4], $_POST[$choice5], $_POST[$password]) && 
    strlen(question > 0) && 
    strlen(choice1 > 0) && 
    strlen(choice2 > 0) && 
    strlen(choice3 > 0) && 
    strlen(choice4 > 0) && 
    strlen(choice5 > 0) && 
    strlen(password > 0)) 
{ 
    $cat=$_POST['cat']; 
    $question=$_POST['question']; 
    $choice1=$_POST['choice1']; 
    $choice2=$_POST['choice2']; 
    $choice3=$_POST['choice3']; 
    $choice4=$_POST['choice4']; 
    $choice5=$_POST['choice5']; 
    $password=$_POST['password']; 
} 
else{ 
    //Incorrect password or missing data 
} 

相反,我創建一個陣列,每個變量的字符串,我想檢查和foreach循環運行我的測試

//create array with all wanted variables 
$variables = array('cat', 'question', 'choice1', 'choice2', 'choice3', 'choice4', 'choice5', 'password'); 
$returnError = FALSE; 
//run through array to check that all have been posted and meet requirements 
foreach($variables as $var) { 
    if(!isset($_POST[$var]) || !strlen($_POST[$var]) > 0) { 
     $returnError = TRUE; 
     break; 
    } 
} 

現在我想利用字符串名稱,並使用相同的名稱

實例變量

這可能嗎?如果沒有,我會如何做一些類似變量的數組,如下所示:

$variables = array($cat,$question,$choice1,$choice2,$choice3,$choice4,$choice5,$password); 

回答

1

您可以使用Variable variables,雖然不推薦。

global $$var = $_POST[$var]; 
+0

這會導致解析錯誤。這樣做可以修復它: 'global $$ var; $$ var = $ _POST [$ var];' 非常感謝! – fishpen0 2012-03-29 02:52:52