我在display.php中收到以下错误**警告:为foreach()提供的参数无效。我试图在我的显示功能中循环遍历这些数字,并从Main生成每个数字。当我回显display.php时,它会输出nums [0] = $ displayid nums [1] = $ displayid,我想将$ displayid传递给我的查询语句。
generate_numbers()
var rndNums = new Array(16,17,18,19,20,21,22,23,24,25,26,27,28);
var generate_numbers = function()
{
for(var i=0; i < 13; i++)
{
var idx = Math.floor(Math.random()*rndNums.length);
var rndNum = rndNums[idx];
rndNums[idx] = rndNums[rndNums.length - 1];
rndNums.pop();
document.getElementsByName("nums[]").item(i).value=rndNum;
}
}
Display.php的
$nums = isset($_POST['nums']); // array
foreach($nums as $key => $displayid)
{
echo 'nums['.$key.']='.$displayid."<br>\n";
}
$stmt->bind_param("i", $displayid);
$stmt->execute();
$stmt->bind_result($image);
$stmt->fetch();
header("Content-Type: image/jpeg");
echo $image;
?>
main.html中
<form id="numberForm" action="display.php" method="POST">
<input type="hidden" name="nums[]">
<input type="hidden" name="nums[]">
</form>
<button onClick="generate_numbers();document.getElementById('numberForm').submit()">submit</button>
答案 0 :(得分:3)
$nums = isset($_POST['nums']); // array
返回一个布尔值(无论是否设置变量),而不是数组。
也许您正在尝试这样做:
$nums = isset($_POST['nums']) ? $_POST['nums'] : array(); // array
另外,请注意,您不应在图像数据之前回显文本,否则会破坏您的响应。查询中的$display_id
将是循环中的最后一个
答案 1 :(得分:0)
警告:
**警告:为foreach()提供的参数无效。
表示你有一个没有提供数组的foreach循环。因此意味着$ nums是空的,null或者不是数组。
因此我建议更改这些行:
$nums = isset($_POST['nums']); // array
foreach($nums as $key => $displayid)
{
echo 'nums['.$key.']='.$displayid."<br>\n";
}
要:
$nums = isset($_POST['nums']); // array
if (isset($nums) && is_array($nums))
{
foreach($nums as $key => $displayid)
{
echo 'nums['.$key.']='.$displayid."<br>\n";
}
}
这样就可以避免警告,只有在包含任何数据时才会打印nums(并且在adition中 是一个数组)。