Array nach numerischen und assoziativen Schlüsseln trennen

Neurodeamon

Erfahrenes Mitglied
Falls sich noch wer erinnert. Das letzte Problem betraf das Einlesen eines Dateiverzeichnisses in ein Array. Ich habe mich dafür entschieden Dateien und Ordner in dem Array zu speichern. Ordner erhalten einen assoziativen, Dateien einen numerischen Schlüssel. In jedem Wert eines assoziativen Schlüssels befinden sich entweder ein weiteres Array (gleiche Struktur) oder NULL für leere Ordner.

Jetzt ist es nötig aus einer Ebene die Schlüssel (assoziativ und numerisch) auszulesen. Jetzt habe ich festgestellt, das es scheinbar keine Funktion gibt aus dem Array die assoziativen und die numerischen Schlüssel getrennt auszulesen. Ich hoffe mal ich habe keine Funktion übersehen (habe PHP.net beim Suchen eine Menge traffic verursacht :-) ).

Jetzt müßte ich theoretisch die Schlüssel mit einem eindeutigen Prefix oder Suffix für die Ordner in dem Array versehen. Das ist nicht das Problem.

Aber: Habe ich die Funktion die ich brauche übersehen? Würdet ihr anders vorgehen als mit Pre- oder Suffix?

---

Bitte nicht mit (zuviel) Smalltalk und unrelevanten Informationen antworten. Danke :-)
 
Mmmh...,ich würd wahrscheinlich beim Durchlaufen nur Abfragen, ob der Key numerisch ist.... wenn nicht, ist er assoziativ. Setzt natürlich vorraus, das die assozativen Keys nicht auch numerisch sein können :-(
 
Tadaaaa... willkommen in meiner Problemwelt.

a) Wie herausfinden ob assoziativ oder numerisch? (Regex? -> Siehe b) )
b) Der assoziative Schlüssel kann numerisch sein! -> z. B. wenn der Ordner "123" genannt wurde.
 
foreach($array => $key as $value)
{
if(is_int($key)) echo "/me brüllt : Ich bin ein int";
}

Oder ich habe die Aufgabenstellung völlig missverstancen.

Man möge nachsichtig mit mir sein.

Jona
 
Original geschrieben von Nils Adomeit
Oder ich habe die Aufgabenstellung völlig missverstancen.
Man möge nachsichtig mit mir sein.
/me glaubt: Ja, das ist die richtige Lösung zu einer anderen Frage :rolleyes:

Ich brauche etwas wie is_key_num_array() oder is_key_assoc_array(), die es aber nicht gibt, wie es scheint :-)
 
Zuletzt bearbeitet:
Hmm.
PHP:
for ($i=0; $iKey = $aArray[$i]; $i++) {
    echo $iKey." ist ein numerischer Schl&uuml;ssel<br>\r\n";
}

Hat aber den Nachteil: Wenn die numerischen Indiezes bei z.B. 21 aufhören,
darf es natürlich keinen Asoziierten Schlüssel geben, der den Wert 22 hat.
 
Die Antworten sind leider unbefriedigend. Die Lösungen sind zwar ganz net, aber nicht foolproof. Ich habe mittlerweile dem assoziativen array "dir___" als Prefix spendiert und splitte Verzeichnisse und Dateien etwas umständlicher - aber ohne Haken und Nachteile.

Dennoch: Danke für die Antworten!
 
Zurück