谁可以帮助我解决这个问题?
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 }
致命错误:未捕获错误:不能将Entrada类型的对象用作 C:\ xampp \ htdocs \ blog \ app \ EscritorEntradas.inc.php: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}被抛出 C:\ xampp \ htdocs \ blog \ app \ EscritorEntradas.inc.php在第64行
答案 0 :(得分:1)
第一次执行它,此行...
$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)
。