php高手来!!!运行时总是出警告Warning: Invalid argument supplied for foreach,实在解决不了。

<html><head><title>Personality</title></head><body><?php//如果存在,则取表单值$attrs=$_GET['att... <html>
<head><title>Personality</title></head>
<body>
<?php
//如果存在,则取表单值
$attrs = $_GET['attributes'];
if(! is_array($attrs)){$attrs = array(); }
//创建有相同名称的复选框
function make_checkboxes ($name, $query, $options ){
foreach($options as $value => $label){
printf('%s <input type="checkbox" name="%s[]" value="%s" ',$label,$name,$value);
if(in_array($value,$query)){ echo "checked";}
echo "/><br/>\n";
}
}
$personality_attributes = array(
'perky' =>'Perky',
'morose'=>'Morose',
'thinking'=>'Thinking',
'feeling'=>'Feeling',
'thrifty'=>'Spend-thrift',
'prodigal'=>'Shoper');
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="GET">Select your personality attributes:<br/>
<?php make_checkboxes('attributes',$attrs,$personality_atrributes); ?>
<br/>
<input type="submit" name="s" value="Record my personality!" />
</form>
<?php
if(array_key_exists('s',$_GET)) //array_key_exists(key,array)用来判断数组中是否有某个键,$_GET是一数组
{
$description = join(" ",$_GET['attributes']); //join是implode的别名,用来将数组元素合并为字符串
echo "You have a $description personality.";
}
?>
</body>
</html>
展开
 我来答
唱往吧迷才2c
2012-05-28 · TA获得超过250个赞
知道答主
回答量:73
采纳率:0%
帮助的人:13.4万
展开全部
Warning: Invalid argument supplied for foreach()
问题Warning: Invalid argument supplied for foreach() in 完善解决方案
将报错的语句做如下修改(例):



QUOTE:
foreach($extcredits as $id => $credit)
{
if($credit['ratio'])
{
$exchcredits[$id] = $credit;
}
}

改为

QUOTE:
if(is_array($extcredits)) //add
{
foreach($extcredits as $id => $credit)
{
if($credit['ratio'])
{
$exchcredits[$id] = $credit;
}
}
} //add



QUOTE:
foreach((array)$extcredits as $id => $credit)
{
if($credit['ratio'])
{
$exchcredits[$id] = $credit;
}
}
造成这个错误的原因多数是因为论坛升级、编码转换造成的!
如果对PHP熟悉的人,可以直接找到出错的地方,分析出错信息是对哪个数据库表操作时造成的(一般都是论坛的基本数据表),然后,找到相应表的原版数据导进去,问题可解决。
如果对PHP不熟悉的人,可以按出错信息提示的位置,用2楼的修改方法进行修改,问题可解决。
jiangxibaiyi
2012-05-24 · 跟随风去旅行-伤心的歌
jiangxibaiyi
采纳数:3973 获赞数:14412

向TA提问 私信TA
展开全部
使用@忽略错误
追问
请问@加到哪个位置呢?
追答
比如这里
$attrs = $_GET['attributes'];
改成
$attrs = @$_GET['attributes'];
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jifenliya
2012-05-23 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:124万
展开全部
把$options打印出来看看是不是数组
追问
可是$option只相当于一个形参,没法呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式