如何在foreach循环中跳过array_key_exists()中的非数组变量

时间:2014-02-06 19:13:59

标签: php arrays forms

我有以下代码,它保存/发送值并重定向到按钮中给出的地址:

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>

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";
    }
}

如果可见输入字段(如用户名,电子邮件,密码等)值看起来像array[somevalue],那么一切都很有效。但是如果值清楚somevalue(像往常一样),则脚本会回显错误。如何避免错误?

1 个答案:

答案 0 :(得分:1)

你说如果$ Collection是一个数组,它就可以了。如果它不是数组,则会出错。所以你必须检查$ Collection是否是一个数组。

“你怎么做的,”你问?

不知道,我对PHP知之甚少,但我有a good friend。他说this

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