我有这个:
foreach ($country as $value){
使用print_r的$ country的内容是:
Array
但是,当我print_r所有POST变量时,它会将国家显示为单个数组而不是数组中的数组,如上所示?
Array (
[entry] => http://www.google.com
[SelectLocation] => Canada
[country] => Array (
[0] => AL
[1] => AS
)
[type] => country
[destination] => http://yahoo.co.uk
[default] => http://yahoo.com
[loginsubmit] =>
)
发生了什么事?
全部谢谢
我做到了:
$country = sanitize($_POST['country']);
所以$ _POST ['country']的内容是$ country,对吧?!
答案 0 :(得分:4)
听起来你期望register_globals开启(这会从POST创建你的$ country变量)但是该设置没有开启。
所以,你的选择是:
答案 1 :(得分:1)
您确定不需要$_POST['country']
而不仅仅是$country
吗?
答案 2 :(得分:1)
好的..让我们直截了当
你有这样的$ _POST数组吗?
Array (
[entry] => http://www.google.com
[SelectLocation] => Canada
[country] => Array (
[0] => AL
[1] => AS
)
[type] => country
[destination] => http://yahoo.co.uk
[default] => http://yahoo.com
[loginsubmit] =>
)
您尝试通过foreach循环发送的内容:
foreach($_POST['country'] as $value)
{
echo $value . "<br>";
}
并应输出
AL
AS
是吗?
答案 3 :(得分:1)
$country
来自哪里?您是否假设$_POST
变量被自动提取到当前范围内?因为他们不是。也许你想要这个呢?
foreach ( $_POST['country'] as $value) {
答案 4 :(得分:1)
我在这里看不到任何问题:
$country = $_POST['country'];
foreach ($country as $value){
echo $value . '<br />';
}
如果您因为$ _POST数组包含国家/地区密钥的数组而感到困惑,则说明是HTML名称属性后的方括号,这可确保PHP将集合作为数组获取:
<select name="country[]" multiple="multiple">
...
</select>
或者也许:
<input type="checkbox" name="country[]" value="US"/>
<input type="checkbox" name="country[]" value="UK"/>
答案 5 :(得分:-2)
好的,我的消毒功能非常糟糕。我已经解决了这个问题。该函数似乎丢弃了数组,因为它只检查字符串!对不起大家。 :)