2014-02-06 41 views
0

我有以下代碼,從而節省/發送值和重定向到在按鈕給出的地址:如何跳過從array_key_exists()在foreach循環非陣列變量

form.php的

<Form Action="Process.php" Method="Post"> 
    <!-- some input fields (username, email, password, etc.) --> 
    <Input Name="Save[Database]" Type="Hidden" Value="false"> 
    <Input Name="Save[Cookie]" Type="Hidden" Value="true"> 
    <Button Name="Save[WhereToGo]" Type="Submit" Value="Saved.php">Save</Button> 

    <Input Name="Send[Database]" Type="Hidden" Value="true"> 
    <Input Name="Send[Cookie]" Type="Hidden" Value="false"> 
    <Button Name="Send[WhereToGo]" Type="Submit" Value="Sent.php">Send</Button> 
</Form> 
如果看到輸入字段(如用戶名,電子郵件,密碼等)的價值看起來像 array[somevalue]

Process.php

//process the POST data and prepare them for saving/sending 
... 
foreach($_POST as $Collection){ 
    if(array_key_exists("Database",$Collection)){ 
     //send values into db 
    } 

    if(array_key_exists("Cookie",$Collection)){ 
     //save values into cookies 
    } 

    if(array_key_exists("WhereToGo",$Collection)){ 
     header("Location: ".$Collection["WhereToGo"]); 
    }else{ 
     echo "Error"; 
    } 
} 

一切都很正常。但是,如果價值清晰somevalue(像往常一樣)腳本回聲錯誤。如何避免錯誤?

回答

1

你說如果$ Collection是一個數組,它可以工作。如果它不是數組,則會出錯。所以你必須檢查$ Collection是否是一個數組。

「你怎麼做到的?」你問?

不知道,我不知道很多關於PHP,但我有a good friend。他說this

foreach($_POST as $Collection){ 
    if(is_array($Collection)) { 
     // ... 
    } 
} 
+0

我在嘗試之前嘗試過,但沒有奏效。我在你的答案後嘗試它,它的工作原理!我有點困惑。但是,謝謝你。 – aleskva