array untersuchen

N

nameac

Aktives Mitglied
Thread Starter
Dabei seit
20.01.2007
Beiträge
537
Reaktionspunkte
1
Hallo,

angenommen ihr müsstet einen Datensatz in Form eines Array in PHP auslesen. Die Ausmaße des Array sind aber nicht bekannt, d.h. ihr wisst nicht wieviele Dimensionen es besitzt.
Man kann einen var_dump auf das Array machen, dann wüsste man über die Struktur bescheid. Aber angenommen die Dimensionen sind nicht immer gleich, welchen Ansatz würde man programmiertechnisch wählen? Quasi ein Count über die Dimensionen? Ist sowas überhaupt möglich denn man müsste ja den Quellcode ständig um eine Dimension (eine Eckigeklammer) erweitern. Gibt es da einen "Trick"?
 
Gibt es da einen "Trick"?

Rekursion. Eine Funktion die sich selbst aufruft und so die maximale Tiefe ermittelt. Wird aber schwer hier auf eine globale Variable zu verzichten.

Anderer Ansatz, aber nicht so schön: Das var_dump mit einem Regulären Ausdruck untersuchen. So sollte man auch an die maximlae Tiefe kommen.

Edit: Normale Schleife while(true){} dürfte auch funktionieren. Dann gibts auch keine globalen Variablen.
 
Hi.

Ich würde versuchen rekursiv mit count() und is_array() zu arbeiten.
 
du musst doch dann nur die count aufrufe verschachteln...
quasi halt auf jeden array eintrag noch einen count machen...

aber für deinen code ist es am besten, wenn die einzelnen unterarrays einzeln raus holst und dann mit normaler array syntax bearbeitet...

http://www.webcheatsheet.com/PHP/multidimensional_arrays.php


aber warum fragst du dich das überhaupt?
normalerweise schreibt man doch auch den code zu serialisierung und weiß was da weggeschrieben wurde...
 
ich kann nur davon abraten sowas über Arrays zu lösen!

In PHP sind Arrays assoziativ, also Hashes. Das ist sehr dankbar für den Alltag, führt jedoch bei großen Datenbeständen sehr schnell zu deutlichen Performance-Einbrüchen!

Das ganze ruft eigentlich nach einer gescheiten und flexiblen Datenstruktur!
 
danke für eure schnellen und nützlichen Anworten.

Das Array wird von einer Datenbank geliefert. Verwalten möchte ich die Inhalte über Objekte.

würdet ihr die Arrays zu Objekten serialisieren (wenn das sinn macht)? die objekte sind ja assoziative arrays.

mal noch eine kleine PHP frage ein objekt das sich in einem array befindet, kann man dann das objekt direkt referenzieren?
PHP:
$a=array(Objekt a,Objekt b,....);
$a[0]->getData(); //geht das bisher schreibe ich immer
$v=$a[0];
$v->getData();
 
würdet ihr die Arrays zu Objekten serialisieren (wenn das sinn macht)?

Ich würde alles machen was Sinn macht. ;) Ob es Sinn macht musst Du wissen. Ich kenne die Daten und Anforderungen ja nicht.

Objekte würden aber allein bei der Messung der tiefe schon zur Übersichtlichkeit beitragen.

mal noch eine kleine PHP frage ein objekt das sich in einem array befindet, kann man dann das objekt direkt referenzieren?
PHP:
$a=array(Objekt a,Objekt b,....);
$a[0]->getData(); //geht das bisher schreibe ich immer
$v=$a[0];
$v->getData();

Ja, das geht.
 
Zurück
Oben Unten