运行此脚本时出现以下警告:
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
。
奇怪的是,在具有相同类型输入的不同页面上,它没有错误。
问题:有什么问题?
答案 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循环就可以了。