PHP: Mulitdimensionales array auslesen.

haunt

Lieutenant
Registriert
Juni 2010
Beiträge
584
Hallo zusammen,
ich versuche gerade ein dynamisches mulitdimensionales array in eine MariaDB einzulesen. Ich hab jetzt gelesen, dass man das schon irgendwie machen kann. Allerdings scheitere ich gerade an den Arrays. Vielleicht kann mir jemand helfen:

Code:
foreach ($array as $row) {
                if (is_array($row) || is_object($row))
                {
                foreach ($row as $value) {
                       foreach ($value as $level => $level2) {
                        echo  "$level: $level2" . "\n";
                                                            }
                                         }
                 }
}

Gibt mir aktuell folgendes aus:

Feldname1 abc1
Feldname2 abc2
PHP Notice: Array to string conversion in /var/www/html/insertMaria.php on line 31
Feldname3 Array
Feldname4 abc4

Heißt ja, dass sich hinter Feldname 4 ein Array verbirgt.
Ich komme aktuell nicht drauf wie ich da jetzt dran kommen.

Ich würde gerne dann folgendes SQL bauen:
$sql2 = "INSERT into dynamic_array_table (array_value) values ($arry)";


Die Tabelle habe ich wie folgt in der MariaDB:
CREATE TABLE dynamic_array_table ( id INT AUTO_INCREMENT PRIMARY KEY, array_value INT );


Hat jemand eine Idee wie man das umbauen könnte?

Danke und Grüße
 
Einfach mal reinschauen:
PHP:
foreach ($array as $row) {
                if (is_array($row) || is_object($row))
                {
                foreach ($row as $value) {
                       foreach ($value as $level => $level2) {
                        echo '<pre>', var_export($level), '</pre>';
                        echo '<pre>', var_export($level2), '</pre>';
                        // echo  "$level: $level2" . "\n";
                        
                       if (is_array($level2) || is_object($level2))
                       {
                                             foreach ($level2 as $level2_value) {

                                                                                               }

                                                            } else {
                        echo  "$level: $level2_value" . "\n";
}
                                         }
                 }
}

Das lässt sich natürlich auch gut walken in einer walker funktion.
 
hi,

1. verwende BITTE aussagekräftike bezeichner, anstatt "$array", "$value" usw...
2. für "Feldname1", "Feldname2" usw. gilt dasselbe.. zusätzlich entspricht es nicht dem, was du hier als beispiel angibst
3. deine array-struktur zu sehen, wäre hilfreich.. die oben aufgeführte nested loop kann komplett falsch sein und überhaupt nicht dem entsprechen, was du vor hast...
3. schau dir mal die Iterator Klassen an... Damit kann man ziemlich geilen scheiss machen...

4. dein gewünschtes INSERT ($sql2= ...) wird scheitern, weil du einem feld ein array zuweisen willst... serialisiert ja, so wie beschrieben, definitiv nein....

wir müssen hier viel früher ansetzen....... ;-)
 
  • Gefällt mir
Reaktionen: BeBur
gentoomaniac schrieb:
wir müssen hier viel früher ansetzen....... ;-)
Der Kontext...

Keine Ahnung warum man einfach neue Threads startet, ohne wenigstens auf die Vorgeschichte zu verweisen...
 
  • Gefällt mir
Reaktionen: Der Lord, tollertyp, schneup und eine weitere Person
Ich dachte das ist "nur" ein array Thema und eher ein reines PHP Thema. Sorry korrigiere gleich.
 
mach dir bitte auch im vorfeld klar, was das ziel ist, was du bisher als basis hast und womit es technisch sinnvoll ist, an dieser basis anzuknüpfen...... in der ursprungsquelle sprichst du in der überschrift von shell scripting und gehst im weiteren verlauf zu php über.... dann eröffnest du einen neuen thread mit einem marginalsten php loop, ohne kontext, den niemand nachvollziehen kann...... da ergibt sich absolut kein roter faden... weder projektseitig, noch informativ.....

fühl dich nicht angegriffen, aller anfang ist schwer, aber man sollte schon etwas überlegter- und zielorientierter vorgehen. vorallem, wenn man völlig fremde (das forum hier) mit einbezieht... :-)
 
  • Gefällt mir
Reaktionen: Der Lord
Naja ich hab ja ein Ziel was schon umgesetzt ist. Via Shell Skript ziehe ich mir ein JSON file auf den Server. Einlesen der Daten funktioniert auch.
Ich hänge eben schon ein paar Stunden an dem Thema, habe aber schon die meisten Sachen gelöst. Die PHP schleifen sind mir eben nicht ganz klar.

Vielen Dank - auch wenn vermutlich nicht im Text ersichtlich hat sich mein "Denkfehler" geklärt.
In der Iteration hat sich ja noch ein Array versteckt. Hab mir dann bei W3schools nochmal das Thema array angeschaut und es tatsächlich verstanden :D, bzw. prüfe ich einfach ob ein Array kommt und kann dann die Werte ohne Fehler einlesen.

Das mit dem Array in die Mariadb hab ich noch nicht verstanden, werde aber mal schauen ob ich das noch gelöst bekomme. Ist aber auch nur ein "nice to have". Wollte es etwas eleganter lösen, aber wenn ihr denkt, dass seriell besser ist.

Der Rote Faden ist übrigens einfach: Json Datei auf Server ziehen -> Json Datei via PHP in Array umwandeln -> Array in MariaDB einlesen.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben