0

display.phpで次のエラーが発生します**警告:foreach()に無効な引数が指定されました。表示機能でこれらの各番号をループして、メインからそれぞれの画像を生成しようとしています。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>
4

2 に答える 2

3
$nums = isset($_POST['nums']); // array

配列ではなくブール値(変数が設定されているかどうかに関係なく)を返します。

多分あなたはこれをやろうとしています:

$nums = isset($_POST['nums']) ? $_POST['nums'] : array(); // array

また、画像データの前にテキストをエコーし​​ないでください。応答が破損します。そして、$display_idクエリ内のはループの最後のものになります

于 2012-07-30T07:45:24.970 に答える
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は、データが含まれている場合にのみ出力されます(さらに、配列が含まれます)。

于 2012-07-30T08:38:19.937 に答える