对foreach有问题:给我警告

时间:2009-08-17 20:58:13

标签: php arrays

我有这个:

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,对吧?!

6 个答案:

答案 0 :(得分:4)

听起来你期望register_globals开启(这会从POST创建你的$ country变量)但是该设置没有开启。

所以,你的选择是:

  1. 使用$ _POST ['country']代替$ country(好主意)。
  2. 启用register_globals(bad idea!)

答案 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)

好的,我的消毒功能非常糟糕。我已经解决了这个问题。该函数似乎丢弃了数组,因为它只检查字符串!对不起大家。 :)