Hi,
Jedenfalls habe ich jetzt was funktionierendes beinander, aber ich verstehe es nicht:
foreach ($trans as $val)
{
$sortarray[] = $val['osname'];
}
array_multisort($sortarray,$trans);OK, die foreach-Schleife erstellt den sortarray in der Reihenfolge wie $trans vorliegt.
Wie es dann array_multisort schafft $trans wie gewünscht zu sortieren ist mir vollkommen schleierhaft. Ich bitte (Dich) um eine kurze Erklärung, kanns ja nicht einsetzen wenn ich es nicht verstehe.
array_multisort() stellt die Einträge der beiden Arrays sozusagen in einer Tabelle spaltenweise gegenüber und sortiert zeilenweise nach der ersten Spalte - sind dort gleiche Werte vorhanden, greift es zur Sortierung auf die zweite Spalte zurück, usw. In deinem Fall also:
$sortarray | $trans
-----------------------------------------------------------
'x8.gif' | array([PicNr] => 111, [osname] => x8.gif, ...)
'x2.gif' | array([PicNr] => 8, [osname] => x2.gif, ...)
...
nach der zeilenweisen Sortierung nach der ersten Spalte ist logischerweise auch das array $trans nach deinen Wünschen sortiert, da die erste Spalte genau nur die Werte enthält, die du zur Sortierung heranziehen möchtest.
Dein Vorhaben ist allerdings ein klassischer Fall für usort(), welches auch schneller sein sollte. Genau dieser Fall wird im Beispiel 2 unter http://de2.php.net/manual/de/function.usort.php erklärt.
Gruß,
Andreas.