Sven Rautenberg: Mehrdimensionales Array sortieren

Beitrag lesen

Moin!

Array
{
   [5] => Array
        (
            [PicNr] => 111
            [osname] => x8.gif
            [origname] => button_down.png
            ...
   [6] => Array
        (
            [PicNr] => 8
            [osname] => x2.gif
            [origname] => button_up.png
            ...

Ich dachte ich könnte eine Sortierung mit array_multisort() machen. Also ich hoffte, array_multisort($trans,"osname") würde $trans[6] vor $trans[5] einreihen.

Ok, du willst also nach dem Feld "osname" deines Subarrays sortieren. Das ist, wie von Andreas Görtz schon gesagt, exakt das Anwendungsbeispiel 2 von usort().

Du hast die einzelnen Elemente, die ja komplett verschoben sortiert werden sollen, in _einem_ Array. Deshalb ist array_multisort() falsch, weil das Dinge in _mehreren_ Arrays sortiert.

Jedenfalls habe ich jetzt was funktionierendes beinander, aber ich verstehe es nicht:
foreach ($trans as $val)
  {
    $sortarray[] = $val['osname'];
  }
array_multisort($sortarray,$trans);

Wenn du stattdessen das Beispiel 2 von usort() nimmst, und die Vergleichsfunktion von "fruit" auf "osname" umstellst, wirst du Erfolg haben.

- Sven Rautenberg