不能使用类型书的对象作为数组

时间:2013-06-05 17:04:58

标签: php arrays oop

我有一个名为“book”的PHP类:我已经创建了它的各种实例并将它们放在一个名为$books的数组中。我知道这不是PHP中最好的方法,但我在JavaScript中学习了OOP,这就是我通常的做法。

$books的var_dump将产生

array(2) { [0]=> object(book)#3 (6) { // some properties }
[1]=> object(book)#4 (6) { // some properties } }

我总是能够使用foreach($books as $book)迭代对象数组,但这次我收到了错误:

  

不能使用类型书的对象作为数组

Var转储说它是一个数组:错误报告说是一个对象。这是为什么?

$books是使用$books = array();创建的,其中的对象添加了array_push()$books是一个数组,而不是一个对象:PHP是疯了吗?

2 个答案:

答案 0 :(得分:1)

你确定$books是一个数组吗?看起来您正在尝试迭代 book 对象。

PHP中没有$books.length符号。如果它应该是$books->length,但由于$books是一个数组,它是count($books)。与JavaScript不同,数组不是PHP中的对象。

答案 1 :(得分:1)

当您尝试迭代Book对象而不是Book对象数组时,您的问题看起来很好,请检查您的数组和变量;可能你正在为数组var分配一个对象,而不是将它附加到你的数组