<?php
$array = array(
	array('nom' => 'a', 'cat' => '1'),
	array('nom' => 'b', 'cat' => '2'),
	array('nom' => 'c', 'cat' => '1'),
	array('nom' => 'd', 'cat' => '3'),
	array('nom' => 'e', 'cat' => '1')
);

$cat1 = array();
$cat2 = array();
$cat3 = array();
$general = array();
$i = 0;

foreach ($array as $arr){
	switch ($arr['cat']){
		case 1:
			$cat1[] = $arr;
			break;
			
		case 2:
			$cat2[] = $arr;
			break;
			
		case 3:
			$cat3[] = $arr;
			break;
	}
}

array_push($general, $cat1, $cat2, $cat3);

foreach ($general as $cat){
	echo 'Categoría ' . ++$i . "\n";
	foreach ($cat as $arr){
		echo implode(", ", $arr);
		echo "\n";
	}
	echo "\n";
}