foreach()错误

时间:2013-06-18 12:10:04

标签: php foreach

运行此脚本时出现以下警告:

Warning: Invalid argument supplied for foreach()

这是剧本:

$values = array();
foreach ($_POST['rights'] as $right_id)
{
   $values[] = '(' . $id . ', ' . $right_id . ')';
}

$_POST['rights'] / $id是整数。在这种情况下,它是$_POST['rights'] = 1,2,3,4,5; $id = 2

奇怪的是,在具有相同类型输入的不同页面上,它没有错误。

问题:有什么问题?

4 个答案:

答案 0 :(得分:5)

检查$_POST['rights']

var_dump($_POST['rights']);

我认为$_POST['rights']不是数组。

答案 1 :(得分:0)

传递的数组$_POST['rights']可能是空的。

编辑:

像马克贝克说的那样空阵列很好。你应该回答其他问题。

答案 2 :(得分:0)

foreach必须使用数组,您将其传递给integer。你不能迭代一个整数。

明智的举动可能是检查您要迭代的任何内容确实是一个数组:

if(is_array($_POST['rights'])){
    foreach($_POST['rights'] as $value){
        //Whatever you want to do with each $value
    }
}
else {
    //Let the user know it's hit the fan…
    throw new Exception('Help, I\'m not an array :(')
}

array的PHP文档:http://php.net/manual/en/language.types.array.php

foreach的PHP文档:http://php.net/manual/en/control-structures.foreach.php

答案 3 :(得分:0)

根据您的陈述 $ _ POST ['rights'] 不是数组。

这可能是一个简单的字符串,有1,2,3,4

您需要将其转换为具有爆炸功能的数组。

e.g

$_POST['rights'] = explode(",", $_POST['rights']);

然后你的for循环就可以了。