phparraysmultidimensional-arraygroupingsub-array

group array of php objects by object property


I have a php object (book) with 3 properties: name, category, description I then have a list of these book objects in an array. I want to create a new associative array for these objects grouped by category.

Say I have 4 book objects in an array called $books

name    category  description
==================================
book1   cat1     this is book 1
book2   cat1     this is book 2
book3   cat2     this is book 3
book4   cat3     this is book 4

how can I create an associative array called $categories

$categories['cat1'] = array(book1, book2)
$categories['cat2'] = array(book2)
$categories['cat3'] = array(book3)

where book? is the book object and not the word


Solution

  • Like this:

    foreach($books as $book)
    { 
        $categories[$book->category][] = $book;
    }