首页 > 解决方案 > 致命错误:未捕获的错误:无法使用 Entrada 类型的对象作为数组

问题描述

谁帮我解决这个问题?

56    public static function mostrar_entradas_busqueda($entradas) {
57            $count = count($entradas);
58            for ($i = 1; $i <= $count; $i++) {
59                if ($i % 3 == 1) {
60                    ?>
61                    <div class="row"> 
62                        <?php
63                    }
64                    $entradas = $entradas[$i - 1];
65                    self::mostrar_entrada_busqueda($entradas);
66                    
67                    if ($i % 3 == 0) {
68                        ?>
69                    </div>
70                        <?php
71                    }
72                }
73                if ($i % 3 !== 0) {
74                    ?>
75                    </div>
76                    <?php
77                }
78            }

致命错误:未捕获错误:无法在 C:\xampp\htdocs\blog\app\EscritorEntradas.inc.php:64 中使用 Entrada 类型的对象作为数组:64 堆栈跟踪:#0 C:\xampp\htdocs\blog\vistas\buscar .php(81): EscritorEntradas::mostrar_entradas_busqueda(Object(Entrada)) #1 C:\xampp\htdocs\blog\index.php(117): include_once('C:\xampp\htdocs...') #2 {main} 在第 64 行的 C:\xampp\htdocs\blog\app\EscritorEntradas.inc.php 中抛出

标签: phparrays

解决方案


第一次执行时,这行...

$entradas = $entradas[$i - 1];

... 将 的值重写为$entradas对象(数组的第零个元素的值$entradas)。下次尝试执行它时,实际上是将该对象作为数组进行查询,因此会出现错误。

解决方案:只需重命名该变量,您就完成了:

$entrada = $entradas[$i - 1]; // and now it's single
self::mostrar_entrada_busqueda($entrada);

是的,变量的作用域是 PHP 中的每个函数,而不是每个块。但即使是后者,你仍然必须重写那行;我不知道有任何语言对赋值语句的左右部分有不同的范围解析规则。

作为旁注,我真的不确定您为什么要检查i % 3 == 0内部if (i % 3 == 1)分支。


推荐阅读