更新:经过进一步的实验,看来问题是$ val。如果我复制了错误消息的全文,可能对描述问题更有帮助:" 可捕获的致命错误:类mysqli_result的对象可以不能转换为字符串 in ... &#34 ;.显然,PHP(由于某种原因)无法将$ val转换为字符串。请注意,错误消息表明它是一个可捕获的错误。我曾希望使用" 继续"参数将绕过此错误。
下面的代码可以使用,因为没有变量本身就是一个数组。
foreach ($_SESSION as $key=>$val)
{echo $key. ": ".$val. "<br>";}
通过实验,我发现了哪些&#34; $ key&#34;本身就是一个阵列。由于我弄清楚哪个变量导致了问题,因此简单的解决方案就是取消设置。但这不是一个好的解决方案。
unset($_SESSION['issuenum_index']);
为了解决这个错误,我试图使用&#34; 继续&#34;声明。那没起效。请参阅下面的代码。
foreach ($_SESSION as $key=>$val)
{if(is_array($key)) continue;
{echo $key. ": ".$val. "<br>";}}
如果上面的代码是一个没有触发错误消息的数组,如何修改它以跳过变量?
更新继续:&#34; foreach &#34;代码失败并在迭代到达$ key索引&#34; issuenum_index &#34;时生成以下消息。请注意,这&#34; foreach &#34;代码正确识别&#34; $ 密钥&#34; index as&#34; issuenum_index &#34;但挂在代码的这一部分:&#34; var_dump($ val); &#34;
foreach ($_SESSION as $key=>$val)
{ var_dump($key);
var_dump($val);
echo "<br>";
}
&#34; 警告:var_dump():无法在...... &#34;
中获取mysqli_result*警告:var_dump():第60行的/var/www/sfmags/testform.inc.php中不允许属性访问 object(mysqli_result)#1(5){[&#34; current_field&#34;] =&gt; NULL [&#34; field_count&#34;] =&gt; NULL [&#34;长度&#34;] =&gt; NULL [&#34; num_rows&#34;] =&gt; NULL [&#34; type&#34;] =&gt; NULL} *
答案 0 :(得分:0)
我有一个解决方案可以回答发布的问题。基本上与($ _SESSION ['issuenum_index'])相关联的变量$ val是 OBJECT 。
在阅读本文时,我找到了以下代码片段,我将其应用于我的案例。
foreach ($_SESSION as $value) {
echo gettype($value), "\n";
}
结果:“整数字符串对象整数整数整数”。其中披露了我的一个元素是“对象”。第三个元素是变量:$ _SESSION ['issuenum_index']。
我修改了原始代码以添加“ not object ”。
foreach ($_SESSION as $key=>$val)
if(!is_object($val))
{
echo $key. ": ".$val. "<br>";
} else {
echo "$key is an object <br>";
}
代码有效。我还修改了代码以识别(echo)“ $ _ SESSION ['issuenum_index'] ”是一个对象。这个版本为我提供了所有$ _Session变量的列表。我对这一切如何结合的理解仍然不完整。我不知道为什么它与$ val一起工作?但这是另一个问题。
$ key,在“$ _SESSION”循环中的某一点代表“ issuenum_index ” $ val,我相信代表一个值,例如“1”。但是,它被报告为“对象”。虽然这个问题已经解决,但我仍然需要了解更多。