2013-06-05 4 views
1

У меня есть класс PHP под названием «book»: я сделал несколько его экземпляров и поместил их в массив с именем $books. Я знаю, что это не лучший подход в PHP, но я изучил ООП в JavaScript, и именно так я обычно это делаю.Невозможно использовать объект типа book as array

var_dump из $books будет производить

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

Я всегда был в состоянии итерации в массиве объектов с foreach($books as $book), но на этот раз я получаю сообщение об ошибке:

Cannot use object of type book as array

Var свалка говорит, что это массив: отчет об ошибках - это объект. Почему это?

$books создан с $books = array();, а объекты внутри него добавлены array_push(). $books Является массивом, а не объектом: PHP сумасшедший?

ответ

1

Ваша проблема связана с тем, что вы пытаетесь переименовать объект Book вместо массива объектов Book, хорошо проверьте свой массив и vars; вероятно, вы назначаете объект вашему массиву var, а добавляете его в свой массив.

+0

решено - это то, что я делал ... спасибо! – Saturnix

+0

Отлично, тогда проверьте мое сообщение как ответ: D с наилучшими пожеланиями и удачи – Carlos

1

Вы уверены, что $books - это массив? Похоже, вы пытаетесь перебрать книгу.

В PHP нет нотации $books.length. В любом случае это должно быть $books->length, но так как $books - массив, это count($books). Массивы не являются объектами в PHP, в отличие от JavaScript.

+0

Вы правы - я редактировал вопрос, когда вы отправляли сообщения. count ($ books) работает нормально, и я уверен, что это массив, который вы можете видеть из var_dump. – Saturnix

Смежные вопросы