2016-07-01 4 views
-1

Ich habe ein mehrdimensionales Array, das Informationen über Bilder aus AWS S3 enthält, aber wenn ich sie bekomme, sind sie genau sortiert, wie Sie alphabetisch würden.PHP Sortierung mehrdimensionalen Array auf gemischte Zeichenfolge und Int-Wert

Sagen wir, ich habe 22 Bilder, und sie sind alle wie folgt benannt: .35-aname-0.jpg und die nächste wäre .35-aname-1.jpg und so weiter, mit dem gleichen Namen. Allerdings, wenn ich sie bekam, habe ich sie wie folgt aus:

  • .35-aname-0.jpg
  • .35-aname-1.jpg
  • .35-aname-10.jpg
  • .35-aname-11.jpg
  • .35-aname-2.jpg

ich brauche sie zurück, so dass sie, um wie diese sind:

  • .35-aname-0.jpg
  • .35-aname-0.jpg
  • .35-aname-1.jpg
  • .35-aname-2.jpg
  • .35- aname-10.jpg
  • .35-aname-11.jpg

Wie kann ich es machen, so dass sie es nicht sortieren, wie es rein alphabetisch würde, aber die numerischen Regeln verwendet?

Mein Array enthält kleinere Arrays, die jeweils den Dateinamen, die Verknüpfung zum Bild und den Namen haben.

Ich habe mehrere Sortiermethoden versucht, aber ich bin mir nicht sicher, ob ich sie richtig verwende oder, wenn nicht, wie man sie mit mehrdimensionalen Arrays verwendet. Derjenige, der am vielversprechendsten aussah und tatsächlich so aussah, als sollte er das richtige Ergebnis liefern, war natürlich, aber das tat nichts.

Ich hoffe wirklich, dass Sie Jungs haben eine gute Idee :)

+0

Mögliche Duplikat [? Natürliche Art ein assoziatives Array] (http://stackoverflow.com/questions/28326049/natural- sort-an-assoziatives-array) – ShiraNai7

Antwort

0

, warum Sie nicht die letzte bekommen int explodieren dann explodieren (.) (-) fügen Sie alle ints in einem Array dann sortieren Danach fügen Sie den Rest der Zeichenfolge hinzu.

PS: Sie können Schleife auf dem var $ name
exemple:

 $name= explode(".",".35-aname-10.jpg"); 

     $var=explode("-",$name[1]); 

     $array[]=$var[2]; 

     then you sort the array 

     loop and add ".35-aname-".$array[loopindex].".jpg";