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> 展开
<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> 展开
3个回答
展开全部
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楼的修改方法进行修改,问题可解决。
问题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楼的修改方法进行修改,问题可解决。
展开全部
使用@忽略错误
追问
请问@加到哪个位置呢?
追答
比如这里
$attrs = $_GET['attributes'];
改成
$attrs = @$_GET['attributes'];
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把$options打印出来看看是不是数组
追问
可是$option只相当于一个形参,没法呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询