Array sortieren nach leeren Elementen sortieren, Reihenfolge beibehalten

trench140

Mitglied
Hallo,

ich habe ein Array, welches ein bis vier Elemente enthalten kann.
Die einzelnen Elemente korrespondieren mit vier Formularfeldern, welche getrennt von einander ausgefüllt werden können (primär bis quartär), wobei jedoch eben mindestens eins und maximal alle vier ausgefüllt werden müssen.

Nun möchte ich es so haben, wenn jemand die Felder unregelmäßig ausfüllt, dass dann jeweils das höchstwertigste Element an den Anfang des Arrays verschoben wird und die übrigen entsprechend aufrücken.

Beispiele (primär links, quartär rechts):
{0,0,0,x} -> {x,0,0,0}
{0,x,0,y} -> {x,y,0,0}
{x,0,y,z} -> {x,y,z,0}

Wie kann ich das nun realisieren? Ich weiß, dass es bei PHP Funtkionen gibt, die Arrays sortieren, aber die, die ich bisher probiert haben zerhauen mir im ungünstigen Fall auch noch die Reihenfolge der Elemente, was aber nicht sein soll.

Aus {0,z,x,y} wird dann z.B. {0,x,y,z} oder {x,y,z,0}, es sollte jedoch {z,x,y,0} herauskommen.

Gruß,
Trench
 
Wird das so mit Kommata eingegeben?
Code:
0,x,z,y

Mach dir dadraus ein Array mittels explode (mit "," als Seperator - siehe PHP.net).
Das ist dann so:
Code:
$neu[0] = 0;
$neu[1] = "x";
$neu[2] = "z";
$neu[3] = "y";

Nun legs du einen neuen String an und prüfst Buchstabe für Buchstabe (in_array):
Code:
ist der buchstabe im Array?
  JA: zum String folgendes hinzufügen ",buchstabe"
  NEIN : zum String die Zahl hinzufügen aus $neu[ {an wievielter stelle -von 0 an- der buchstabe steht } ]
 
Hi,

danke für deine Antwort.

Das war so jetzt nur beispielsweise geschrieben.

Konkret werden in dem Formular Hostnamen und/oder IPs für DNS-Server eingetragen, die dann als primäre bis quartäre Nameserver in eine tabelle eingetragen werden sollen. Logischerweise sollte hier dann eben, wenn es kein primärer Nameserver angegeben wurde, der sekundäre übernehmen, wenn er angegeben wurde usw..

Dachte nur es gäbe vielleicht schon eine direkte Funktion in PHP, die eine derartige Sortierung ermöglichst, ansonsten bliebe eben wirklich nur der weg darüber das Array manuell zu durchsuchen.

Gruß,
Trench
 
Am Elementnamen bzw. der Elementnummer im Array ;)

ns1 (bzw. 0): primärer Nameserver
ns2 (1): sekundärer Nameserver
ns3 (2): tertiärer Nameserver
ns4 (3): quartärer Nameserver

Dabei gilt:

ns1 > ns2 > ns3 > ns4
 

Neue Beiträge

Zurück