Ufak bir örnekle başlayalım:

<?
if ($_POST) {
  $kategori = $_POST['kategori'];
  echo $kategori[0] . ' > ' . $kategori[1];
}
?>

<form action="?" method="post">

  <select name="kategori[]">
       <option>Araba</option>
  </select>

  <select name="kategori[]">
       <option>BMW</option>
       <option>Audi</option>
       <option>Peugeot</option>
  </select>

  <input type="submit" value="test" />
</form>
yukarıdaki kod istediğini aslında yapıyor. fakat senin kodunda SELECT (option) value olarak kategori-id koymuşsun. Haliyle yukarıdaki kodun PHP kısmı sana Araba > BMW değil 123 > 43 gibi id leri gösterir.

Burda value olarak hem kategori id, hemde kategori adını gönderebilirsen işin kolay olur. Örn çıktın şu şekilde olmalı:

<select name="kategori[]">
   <option value="[123][Araba]">Araba</option>
</select>

<select name="kategori[]">
   <option value="[43][BMW]">BMW</option>
</select>
böylece form post halinde $kategori[0] değişkeni [123][Araba] değerini getirir. Buradan da ID ve KAT.ADI nı parçalayarak alabilirsin. Örn:

<?
preg_match_all('#\[(\d+)\]\[([^\]]*)\]#', $kategori[0], $ana_kat);

$ana_kategori_id = $ana_kat[1][0];
$ana_kategori_adi = $ana_kat[2][0];
?>

son olarak tüm select ler üzerindeki verileri işleme kısmını döngü ile yapabilirsin:

<?
$kategoriler = $_POST['kategori'];
$kat_isimleri = array();
foreach ((array) $kategoriler as $birKategori):
  preg_match_all('#\[(\d+)\]\[([^\]]*)\]#', $birKategori, $cat_data);
  $kat_isimleri[] = $cat_data[2][0];
endforeach;

if (count($kat_isimleri)) echo implode (' > ', $kat_isimleri);
?>