【问题标题】:How to Fix "Invalid argument supplied for foreach()" in PHP如何在 PHP 中修复“为 foreach() 提供的参数无效”
【发布时间】:2021-08-05 07:45:18
【问题描述】:

在将数组数据显示到 HTML 表中时,我得到一个为 foreach() 提供的无效参数。请帮我解决这个问题。

我得到以下错误, 警告:在第 56 行的 /Applications/XAMPP/xamppfiles/htdocs/mf/view_cart.php 中为 foreach() 提供的参数无效

<?php
   $bill= 0;
     $sno = 1;
   
   foreach($_SESSION as $products){
          //print_r($products);
   
   print "<tr>";    
   echo "<form action='edit_cart.php' method='post'>"; 
   if (!$products) $products = array();   
     foreach($products as $key =>$value){
var_dump($products);
   if($key == 0){   
   echo "<input type='hidden' name='name$key' class='form-control' value='".$value."'>";       
   echo "<td>".$value."</td>";   
      
   } else if($key == 1){  
   $p = $value;   
   echo "<input type='hidden' name='name$key' class='form-control' value='".$value."'>";        
    echo "<td>".$value."</td>";     
      
   }else if($key == 2){  
   $q = $value;   
   print "<td><input type='number' name='name$key' class='form-control col-xl-4 text-center' min='1' value='".$value."'></td>";     
   $bill = ($p * $q);
   echo "<td>".($bill)."</td>";
               echo "<td><input type='submit' name='event' value='Update' class='btn btn-sm btn-warning'></td>";
   echo "<td><input type='submit' name='event' value='Delete' class='btn btn-sm btn-danger'></td>";   
   }
   
        
     }
   
   echo "</form>"; 
   print "</tr>"; 
   }
    
   print "</table>";
   print "</div>";         
   ?>
var_dump($products); Output.
    
array(5) { [0]=> string(5) "Shirt" [1]=> string(4) "1000" [2]=> string(1) "2" [3]=> string(1) "1" [4]=> string(14) "coconut-1.jpeg" }
array(5) { [0]=> string(5) "Shirt" [1]=> string(4) "1000" [2]=> string(1) "2" [3]=> string(1) "1" [4]=> string(14) "coconut-1.jpeg" }
array(5) { [0]=> string(5) "Shirt" [1]=> string(4) "1000" [2]=> string(1) "2" [3]=> string(1) "1" [4]=> string(14) "coconut-1.jpeg" }
array(5) { [0]=> string(5) "Shirt" [1]=> string(4) "1000" [2]=> string(1) "2" [3]=> string(1) "1" [4]=> string(14) "coconut-1.jpeg" }
array(5) { [0]=> string(5) "Shirt" [1]=> string(4) "1000" [2]=> string(1) "2" [3]=> string(1) "1" [4]=> string(14) "coconut-1.jpeg" }
array(3) { [0]=> string(14) "All in One Set" [1]=> string(3) "140" [2]=> string(1) "4" }
array(3) { [0]=> string(14) "All in One Set" [1]=> string(3) "140" [2]=> string(1) "4" }
array(3) { [0]=> string(14) "All in One Set" [1]=> string(3) "140" [2]=> string(1) "4" }

【问题讨论】:

  • 这通常意味着您为 foreach 循环的 arg 1 提供的参数(数组/对象)不是数组或对象。我会 var_dump 该循环中的参数,以便您可以看到传递给循环的内容。
  • 第 56 行是哪一个?您可能想要修复您的 HTML,缺少一个起始 &lt;table&gt;&lt;form&gt; 不允许在 &lt;tr&gt; 中,用您的表单包围您的表格或将其放在 &lt;td&gt; 中。然后结束时也是多余的&lt;/div&gt;
  • 不是您当前的问题,但此代码的格式在将来很难调试。试试3v4l.org/SBDRU,也不确定为什么要交换echos 和print。需要var_dump($products) 才能为您提供帮助。
  • 先生添加了 var_dump($products);输出请帮帮我
  • 第 56 行是 foreach($products as $key =>$value)

标签: php html foreach


【解决方案1】:

看来您正在使用 $_SESSION 对象不仅仅是产品 - 也许那里有一些用户信息。我建议把你所有的产品都说成$_SESSION['products']

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多