{"id":254,"date":"2024-04-25T10:00:48","date_gmt":"2024-04-25T10:00:48","guid":{"rendered":"https:\/\/math-brownies.de\/?p=254"},"modified":"2024-04-25T10:02:28","modified_gmt":"2024-04-25T10:02:28","slug":"arrays-aus-datenbanken-in-php","status":"publish","type":"post","link":"https:\/\/math-brownies.de\/index.php\/2024\/04\/25\/arrays-aus-datenbanken-in-php\/","title":{"rendered":"Arrays aus Datenbanken in PHP"},"content":{"rendered":"\n\n\n<p>Nachdem ich nun schon seit Wochen irgendwie daran knabbere, die Struktur von Arrays zu verstehen, hat ChatGPT mir heute sehr geholfen, indem es Namen f\u00fcr Arraytypen benutzt hat &#8211; und auf Nachfrage nat\u00fcrlich auch erkl\u00e4ren konnte.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Also, es gibt in php zwei Typen von arrays: <strong>numerische<\/strong> Arrays und <strong>assoziative<\/strong> Arrays. Der Unterschied liegt in der Art, wie die einzelnen Eintr\u00e4ge des Arrays angesprochen werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Numerische Arrays<\/h3>\n\n\n\n<p>&#8230;werden einfach \u00fcber eine Zahl angesteuert. In genau der Reihenfolge, in der die Werte in das Arrays reingeschrieben werden, kann man sie ansteuern. Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$rows = array ( 'Hans', 'Paul', 'Lisa');<\/code><\/pre>\n\n\n\n<p>Rufe ich jetzt $rows[0] auf, erhalte ich Hans, und $rows[2] gibt mir Lisa. Nat\u00fcrlich geht das auch mit einem mehrdimensionalen Array, und genau das passiert auch, wenn ich Daten aus einer Datenbank in eine Variable wie $rows hineinschreibe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$rows= (('Hans','12'), ('Paul', '12'), ('Lisa','11'));<\/code><\/pre>\n\n\n\n<p>Bei diesem mehrdimensionalen Arrays ruft $rows[2] dann zum Beispiel den Array (&#8218;Lisa&#8216;, &#8217;11&#8216;) auf.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Assoziative Arrays<\/h3>\n\n\n\n<p>&#8230; haben Schl\u00fcssel (Strings oder andere Skalare), um Eintr\u00e4ge ansteuern zu k\u00f6nnen, was genauere Zugriffe auch ohne Kenntnis der Reihenfolge erm\u00f6glicht. Im Falle des Zugriffs auf eine Datenbank sind die einzelnen Arrays in einer Zeile assoziierte Arrays: Sie haben die Benennungen der jeweiligen Spalte als Schl\u00fcssel. Im Beispiel oben w\u00e4re es zum Beispiel der Array von Lisa, den man auch so erstellen k\u00f6nnte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$lisa=array ('name'=&gt;'Lisa', 'alter'=&gt;'11');<\/code><\/pre>\n\n\n\n<p>Mit $lisa[&#8217;name&#8216;] bekomme ich dann &#8222;Lisa&#8220; und mit $lisa[&#8218;alter&#8216;] bekomme ich die 11. (Zahlen m\u00fcssen nicht zwingend in Hochkommata, das kommt auf den Variablentyp an.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Anwendung<\/h2>\n\n\n\n<p>Wenn ich eine Variable mit den kompletten Inhalten einer Tabelle f\u00fclle, entsteht ein numerisches Array, das mit assoziativen Arrays gef\u00fcllt ist. Gut kann man die unterschiedlichen Zugriffe hier sehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>foreach ($rows as $key =&gt; $value) {\n         if ($value &#91;\u2018name\u2019]==\u2018.\u2018 OR $value == $rows&#91;0]) {\n             echo $value&#91;\u2018name\u2018];\n        }\n}<\/code><\/pre>\n\n\n\n<p>$rows ist hier die Variable mit den Inhalten der Datenbank. In jeder Runde wird $key als Z\u00e4hlvariable hochgez\u00e4hlt und in $values wird der assoziative Array geschrieben, der an der jeweiligen Stelle des numerischen Arrays $rows steht. $value[&#8217;name&#8216;] greift dann also auf die Spalte &#8222;name&#8220; zu und zwar in dem Eintrag, in dem ich halt gerade von der Runde her bin. <\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"767\" height=\"428\" src=\"https:\/\/math-brownies.de\/wp-content\/uploads\/2024\/04\/grafik-1.png\" alt=\"\" class=\"wp-image-257\" srcset=\"https:\/\/math-brownies.de\/wp-content\/uploads\/2024\/04\/grafik-1.png 767w, https:\/\/math-brownies.de\/wp-content\/uploads\/2024\/04\/grafik-1-300x167.png 300w\" sizes=\"auto, (max-width: 767px) 100vw, 767px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p>Das ist die Tabelle in der Ansicht von php MyAdmin. Ich habe also 6 Eintr\u00e4ge, d.h. $rows hat 6 Eintr\u00e4ge, die ich mit $rows[0] bis $rows[5] ansteuern kann. In jedem Eintrag steckt ein assoziatives Array mit den Schl\u00fcsseln &#8222;id&#8220; und &#8222;name&#8220;.<br>Bin ich also gerade in der 3. Runde, dann ist $values[&#8217;name&#8216;] gerade &#8222;ein&#8220; und meine Ausgabe mit dem echo schreibt in meinen HTML-Code das hinein.<\/p>\n<\/div>\n<\/div>\n\n\n\n<p>Man kann die Variable $key auch benutzen, um in dieser Situation direkt auf $rows einzuwirken. $rows bleibt ja nach der Schleife bestehen, w\u00e4hrend $value jede Runde neu bef\u00fcllt hat und nach Ende der Schleife einfach nur den Inhalt der letzten Tabellenzeile hat. Nehmen wir an, ich m\u00f6chte f\u00fcr die Ausgabe auf meiner Webseite allen Eintr\u00e4gen noch den Nachnamen M\u00fcller erg\u00e4nzen. Dann kann ich eine Schleife laufen lassen, die so aussieht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>foreach ($rows as $key =&gt; $value) {\n         $rows&#91;$key]&#91;'name']=$value&#91;'name'].\" M\u00fcller\";\n        }\n}<\/code><\/pre>\n\n\n\n<p>Danach w\u00e4re nun in der Tabelle der Datenbank immer noch dasselbe, aber der Array $rows hat ver\u00e4nderte Teilarrays: <br>$rows = ((&#8218;id&#8217;=&gt;1, &#8217;name&#8217;=&gt;&#8217;Das M\u00fcller&#8216;), ((&#8218;id&#8217;=&gt;2, &#8217;name&#8217;=&gt;&#8217;ist M\u00fcller&#8216;), &#8230;). Darauf kann ich weiter hinten im Code zur\u00fcckgreifen. Zum Beispiel kann man so Leerzeichen erg\u00e4nzen oder direkt in $rows den HTML- bzw. CSS-Code hinzuf\u00fcgen, um es sp\u00e4ter im echo direkt verf\u00fcgbar zu haben. In der Praxis kann man auch besondere Zeichen umwandeln, um z.B. Konflikte zwischen php, javascript und der HTML-Ausgabe durch Befehlszeichen wie \/ oder &lt;&gt; im Text zu reduzieren. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem ich nun schon seit Wochen irgendwie daran knabbere, die Struktur von Arrays zu verstehen, hat ChatGPT mir heute sehr geholfen, indem es Namen f\u00fcr Arraytypen benutzt hat &#8211; und auf Nachfrage nat\u00fcrlich auch erkl\u00e4ren konnte. Also, es gibt in php zwei Typen von arrays: numerische Arrays und assoziative Arrays. Der Unterschied liegt in der [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[4,3,5],"tags":[68,29,67],"class_list":["post-254","post","type-post","status-publish","format-standard","hentry","category-datenbanken","category-informatik","category-php","tag-arrays","tag-datenbanken","tag-php"],"_links":{"self":[{"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/posts\/254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/comments?post=254"}],"version-history":[{"count":3,"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/posts\/254\/revisions"}],"predecessor-version":[{"id":259,"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/posts\/254\/revisions\/259"}],"wp:attachment":[{"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/media?parent=254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/categories?post=254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/math-brownies.de\/index.php\/wp-json\/wp\/v2\/tags?post=254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}