1

运行此脚本时,我收到以下警告:

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

4 回答 4

5

查看$_POST['rights']

var_dump($_POST['rights']);

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

于 2013-06-18T12:12:18.210 回答
0

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

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

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

例如

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

然后你的 for 循环将起作用。

于 2013-06-18T12:28:45.167 回答
0

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

编辑:

就像马克贝克说的那样,空数组很好。您应该选择其他答案。

于 2013-06-18T12:11:07.677 回答
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 :(')
}

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

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

于 2013-06-18T12:13:12.390 回答