使用" foreach"

时间:2015-04-30 20:01:59

标签: php arrays

更新:经过进一步的实验,看来问题是$ 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} *

1 个答案:

答案 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”。但是,它被报告为“对象”。虽然这个问题已经解决,但我仍然需要了解更多。