奇怪的Warning: Invalid argument supplied for foreach()

veardn 2009-11-30 05:05:22
我的代码在本机测试好好的

但别人通过局域网连我机器上的网站就出现这个错误

这是什么原因?

我的代码

<?php
require_once("application/modules/umc/register/register.php");
require_once("application/modules/umc/product/search.php");
require_once("application/modules/umc/detail/index.php");
$doublecheck = new DoubleCheck();
$StringCode = new StringCode();
$Search = new Search();

@session_start();
//最近浏览过的商品
$previous_viewed_products2=$_SESSION['previous_viewed_products'];

$previous_viewed_products_arr2=$Search->getPreviousViewedProducts($previous_viewed_products2);//得到结果集,是一个二维数组
?>
<table width=<?php echo count($previous_viewed_products2)*90+10 ?>px height=150px cellspacing=9 cellpadding=1 ><tr >
<?php
//if(is_array($previous_viewed_products))
=========================>>>>>>>>>>>>>这句话报错 foreach($previous_viewed_products2 as $p_source)//嵌套循环的原因是把无序的$previous_viewed_products_arr2改成session里的$previous_viewed_products的顺序
{
foreach($previous_viewed_products_arr2 as $p)
{
if($p['productid']==$p_source)
{
$im_1 =$p['imageurl'];
$str_1=explode("../",$im_1);
$im_2 =$str_1[3];
$price= $doublecheck->DoubleChecks($p['sell_price']);
$proname=$p['productname'];
if(mb_strlen($proname,'utf-8')>12)
$proname=$StringCode->cut($proname,20,0,'utf-8');
else if(mb_strlen($productname,'utf-8')<=8)//理论上用6比较好,但8保险点,因为有的名称是中文+数字和英文
$productname.="    ";
echo "<td width=100px align=center>";
echo "<table cellspacing=0 cellpadding=0 width=80px>";
echo "<tr height=90px><td><img src='$im_2' title='$productresult[productname]' width=80px height=80px></td></tr>";
echo "<tr height=30px><td>$proname</td></tr>";//产品名称
echo "<tr><td style='color:red'>¥$price</td></tr>";//价格
echo "<tr><td class=flpl_btn align=center><a href=\"javascript:_AddToCart('".$p[productid]."','".$p[productname]."','".$price."','".$p[weight]."')\"><img src='images/cart.png' border='0'></a></tr>";
echo "</table></td>";
}
}
}
?>
</tr></table>
...全文
2120 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
php_hanhan 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 alandy 的回复:]

引用 4 楼 lenovor61i 的回复:
Warning: Invalid argument supplied for foreach()
的原因就是foreach里面的那个被each的参数不是数组。与这个代码片段运行警告一样
PHP code<?phpforeach($liaoas$zi)?>
具体错误原因就自己看那个循环的时候把值给弄丢了哈,
最好在用foreach的时候在前面……
[/Quote]
人家三楼说的是对的,你个白痴,真正误导人的是你
你丫放个不是数组的进去不会报错?
2B青年
huorexiaji 2009-12-01
  • 打赏
  • 举报
回复
建议楼主看看代码和模板分离方面的资料,很有帮助的!
CNCPT01 2009-12-01
  • 打赏
  • 举报
回复
$previous_viewed_products_arr2=(array)$Search->getPreviousViewedProducts($previous_viewed_products2);//

$Search->getPreviousViewedProducts() 函数肯定有问题
alandy 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lenovor61i 的回复:]
Warning: Invalid argument supplied for foreach()
的原因就是foreach里面的那个被each的参数不是数组。与这个代码片段运行警告一样
PHP code<?phpforeach($liaoas$zi)?>
具体错误原因就自己看那个循环的时候把值给弄丢了哈,
最好在用foreach的时候在前面加一个is_array判断
[/Quote]

foreach 里面的参数如果不是数组或是空值,不会进入内部循环更不会报错,不要误导!
lenovor61i 2009-11-30
  • 打赏
  • 举报
回复
Warning: Invalid argument supplied for foreach()
的原因就是foreach里面的那个被each的参数不是数组。与这个代码片段运行警告一样

<?php
foreach($liao as $zi)
?>

具体错误原因就自己看那个循环的时候把值给弄丢了哈,
最好在用foreach的时候在前面加一个is_array判断
骄傲青蛙 2009-11-30
  • 打赏
  • 举报
回复
foreach的数组获不到值, 就是说传递变量时掉失值了
战斗生活 2009-11-30
  • 打赏
  • 举报
回复
还有这种方式些代码啊 仔细看就好了吧
alandy 2009-11-30
  • 打赏
  • 举报
回复
只贴出错代码断,方便帮你DEBUG~~

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧