Witam!
Napisałem sobie przykładową tablicę trójwymiarową:
  1. <?php
  2. $produkt = array ( array(array('SAM_OPO', 'Opony', 100),
  3.  array('SAM_OLE', 'Olej', 10),
  4.  array('SAM_SWI', 'Świece zapłonowe', 4)
  5. ),
  6.  array(array('VAN_OPO', 'Opony', 120),
  7.  array('VAN_OLE', 'Olej', 12),
  8.  array('VAN_SWI', 'Świece zapłonowe', 5)
  9. ),
  10.  array(array('CIE_OPO', 'Opony', 150),
  11.  array('CIE_OLE', 'Olej', 15),
  12.  array('CIE_SWI', 'Świece zapłonowe', 6)
  13. )
  14.  );
  15. ?>

I chciałbym tą tablicę posortować powiedzmy wg. pola 1 tzn. Opis
W książce był kod do sortowania tablic (a właściwie funkcja, jednak jestem na etapie tablic), i nie mogę go za nic zrozumieć. Funkcja ta wygląda tak:
  1. <?php
  2. function porownaj($x, $y)
  3. {
  4. if ($x[1] == $y[1])
  5. return 0;
  6. elseif ($x[1] < $y[1])
  7. return -1;
  8. else
  9. return 1;
  10. }
  11. ?>

I teraz chcę to posortowane wyświetlić w tabeli więc :
  1. <?php
  2. usort($produkt, 'porownaj');
  3. echo '<table border=1>';
  4.  echo '<tr>';
  5.  echo '<td>Kod</td>';
  6.  echo '<td>Opis</td>';
  7.  echo '<td>Cena</td>';
  8.  echo '</tr>';
  9.  for ($warstwa = 0 ; $warstwa < 3 ; ++$warstwa)
  10.  {  
  11.  for ($kolumna = 0 ; $kolumna < 3 ; ++$kolumna)
  12.  {
  13. echo '<tr>';
  14.  echo '<td>'. $produkt[$warstwa][$kolumna][0] .'</td>';
  15.  echo '<td>'. $produkt[$warstwa][$kolumna][1] .'</td>';
  16.  echo '<td>'. $produkt[$warstwa][$kolumna][2] .'</td>';
  17. echo '</tr>';
  18.  }
  19.  }
  20. echo '</table>';
  21. ?>

Ale jednak nic się nie zmienia, a ja nawet tego kodu nie mogę zrozumieć.
Wiem tyle :
  1. <?php
  2. function porownaj($x, $y) 
  3. {
  4. if ($x[1] == $y[1]) //porównuje $x i $y czy są sobie równe (po co są te zmienne i co one oznaczają?
  5. return 0; // zwraca wartość funkcji, ale co to 0 oznacza, false?
  6. elseif ($x[1] < $y[1]) / jeżeli if nie jest spełniona sprawdza ten warunek
  7. return -1;//znów zwraca wartość funkcji? ale co oznacza -1?
  8. else //jeżeli żaden z powyższych warunków nie zostanie spełniony zwraca 1 -true?
  9. return 1;
  10. }
  11. ?>

Pozdrowiena
Edit:
Działa na tablicach 2-wymiarowych, a jak zrobić żeby ruszyło na 3-wymiarowych? i jak ta funkcja działa oczywiście bo dalej nie wiem