2012-07-30 80 views
0

我在display.php中收到以下錯誤**警告:爲foreach()提供的無效參數。我試圖循環顯示函數中的每個數字,併爲每個Main函數生成一個圖像。當我回顯display.php輸出nums [0] = $ displayid nums [1] = $ displayid,我想將$ displayid傳入我的查詢語句。傳遞給foreach()循環的參數無效?

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> 

回答

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

返回一個布爾值(變量是否被設置或不),而不是陣列。

也許你正在試圖做到這一點:

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

此外,請注意,你不應該echo文本的圖像數據之前,你要破壞你的迴應。而在查詢中$display_id會從循環

+0

謝謝!它現在正在工作,但它只返回一個圖像。要麼它沒有運行foreach循環或圖像被放在彼此之上。你知道一種方法,我可以抵消幾個像素的每一個? – Undermine2k 2012-07-30 07:54:11

0

最後一個警告:

**警告:的foreach提供了無效的參數()。

意味着你有一個沒有提供數組的foreach循環。這意味着$ nums可以是空的,也可以不是數組。

因此我會建議改變線路:

$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 是一個數組)。