Debes ir verificando la existencia de dicha categoría antes de agregarla:
Código PHP:
Ver original
while (...) {
$cat = $row->category;
// NO existe la categoria?
if (!isset($all[$cat])) { // entonces la creamos como un array
}
// a partir de aquí vamos agregando elementos
// usando la categoría en común
$all[$cat] []= array('x' => $y, ...); }
¿Se entiende la idea?