Ich habe einige Änderungen an der Klasse vorgenommen, um sie meinen Bedürfnissen anzupassen, aber es gibt ein Problem (vielleicht ein dummes).
Beim Benutzen select() Es gibt ein mehrdimensionales Array zurück, das Zeilen mit 3 assoziativen Spalten enthält (ID, Vorname, Nachname):
Array
(
[0] => Array
(
[id] => 1
[firstname] => Firstname one
[lastname] => Lastname one
)
[1] => Array
(
[id] => 2
[firstname] => Firstname two
[lastname] => Lastname two
)
[2] => Array
(
[id] => 3
[firstname] => Firstname three
[lastname] => Lastname three
)
)
Jetzt möchte ich, dass dieses Array als MySQL-Ergebnis verwendet wird (mysql_fetch_assoc()).
Ich weiß, dass es mit verwendet werden kann foreach(), aber das ist mit einfachen/flachen Arrays. Ich denke, dass ich eine neue umdeklarieren muss foreach() innerhalb jedes foreach()aber ich denke, dass dies zu einer Verlangsamung oder einer höheren Serverlast führen könnte.
Also wie bewerben foreach() mit diesem mehrdimensionalen Array der einfachste Weg?
Warum brauchen Sie eine zweite foreach? Sie haben alle Ihre Variablen mit nur einer Schleife bereit, Sie können einfach auf sie zugreifen als $value['id']etc.
Ich denke, Sie sind es gewohnt, mit numerischen Indizes auf die Daten zuzugreifen (z $row[0]), aber das ist nicht nötig. Wir können benutzen assoziative Arrays um die Daten zu bekommen, nach denen wir suchen.
Ich bekomme nicht den ersten Index von jedem Index. kannst du mir diesbezüglich weiterhelfen?
– Sarvesh Tiwari
18. März 2020 um 21:23 Uhr
@SarveshTiwari Stellen Sie eine neue Frage.
– Brad
18. März 2020 um 21:28 Uhr
Sie können verwenden array_walk_recursive:
array_walk_recursive($array, function ($item, $key) {
echo "$key holds $item\n";
});
Warum würden Sie das für jeden tun? Scheint eine Verschwendung von Speicher zu sein, anonyme Funktionen für jede Iteration zu definieren.
– Brad
20. Juni 2011 um 16:12 Uhr
@Brad, ich bevorzuge es in diesem Fall nicht gegenüber foreach, ich wollte nur eine Alternative zeigen. Übrigens denke ich nicht, dass es viel Speicher verschwendet, ich denke, PHP definiert diese Funktion nur einmal, ruft sie aber für jede Iteration auf.
– Karolis
20. Juni 2011 um 17:54 Uhr
die Frage fragt zu verwenden foreach.Aber ich denke, das ist bequemer, denn wenn Sie Elemente in einem Array hinzufügen (sagen wir, Sie haben hinzugefügt age), müssen Sie nicht ändern array_walk_recursive Funktion
– ajinzrathod
16. April 2020 um 8:50 Uhr
Bei Arrays in PHP ist die Foreach-Schleife immer eine schöne Lösung.
In diesem Fall könnte es zum Beispiel sein:
foreach($my_array as $number => $number_array)
{
foreach($number_array as $data = > $user_data)
{
print "Array number: $number, contains $data with $user_data. <br>";
}
}
Dies wäre ein Kommentar unter Brads Antwort gewesen, aber ich habe keinen ausreichend hohen Ruf.
Kürzlich fand ich heraus, dass ich auch den Schlüssel des mehrdimensionalen Arrays brauchte, dh es war nicht nur ein Index für das Array, in der foreach-Schleife.
Um dies zu erreichen, könnten Sie etwas verwenden, das der akzeptierten Antwort sehr ähnlich ist, aber stattdessen den Schlüssel und den Wert wie folgt aufteilen
Holla/Hallo, Ich habe es verstanden! Sie können den Dateinamen, tmp_name, file_size usw. leicht erhalten. Ich werde Ihnen also zeigen, wie Sie den Dateinamen mit einer Codezeile erhalten.
Aus jedem Wert in einem mehrdimensionalen Array Details herauszuholen, ist ganz einfach, sobald Sie Ihr Array eingerichtet haben. Das ist also das Array:
Verwenden Sie dann eine foreach-Schleife und lassen Sie das Array wie folgt durchlaufen:
foreach ($example_array as $value) {
echo $value[0]; //this will echo 1 on first cycle, 2 on second etc....
echo $value[1]; //this will echo John on first cycle, Dave on second etc....
echo $value[2]; //this will echo Smith on first cycle, Jones on second etc....
}
Sie können um ihn herum echoen, was immer Sie möchten, um in eine Tabelle zu echoen:
Warum brauchen Sie eine zweite
foreach
? Sie haben alle Ihre Variablen mit nur einer Schleife bereit, Sie können einfach auf sie zugreifen als$value['id']
etc.– jeroen
20. Juni 2011 um 15:29 Uhr