Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4



Ähnliche Dokumente
5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

teamsync Kurzanleitung

1 topologisches Sortieren

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Tevalo Handbuch v 1.1 vom

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

2. Programmierung in C

Erstellen einer digitalen Signatur für Adobe-Formulare

Grundbegriffe der Informatik

Leichte-Sprache-Bilder

Repetitionsaufgaben Wurzelgleichungen

Erklärung zum Internet-Bestellschein

Primzahlen und RSA-Verschlüsselung

1 Mathematische Grundlagen

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Erstellen von x-y-diagrammen in OpenOffice.calc

Rundung und Casting von Zahlen

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Software Engineering Klassendiagramme Assoziationen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Berechnungen in Access Teil I

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Stand: Adressnummern ändern Modulbeschreibung

Zeichen bei Zahlen entschlüsseln

Guide DynDNS und Portforwarding

Anwendungsbeispiele Buchhaltung

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Die Post hat eine Umfrage gemacht

Grammatiken. Einführung

Einführung in. Logische Schaltungen

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

FIS: Projektdaten auf den Internetseiten ausgeben

5.2 Neue Projekte erstellen

Das Persönliche Budget in verständlicher Sprache

Statuten in leichter Sprache

Professionelle Seminare im Bereich MS-Office

Erstellen der Barcode-Etiketten:

7 Rechnen mit Polynomen

Konzepte der Informatik

10.1 Auflösung, Drucken und Scannen

Feiertage in Marvin hinterlegen

Mediator 9 - Lernprogramm

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Datenbanken Microsoft Access 2010

Programmiersprachen und Übersetzer

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Grundlagen der Theoretischen Informatik, SoSe 2008

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Kurzanleitung. Toolbox. T_xls_Import

12. Dokumente Speichern und Drucken

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Access Verbrecherdatenbank Teil 3

Geld Verdienen im Internet leicht gemacht

Was meinen die Leute eigentlich mit: Grexit?

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Lehrer: Einschreibemethoden

Updatehinweise für die Version forma 5.5.5

Zwischenablage (Bilder, Texte,...)

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Excel Funktionen durch eigene Funktionen erweitern.

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Klicken Sie auf Weiter und es erscheint folgender Dialog

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Animationen erstellen

Der Kalender im ipad

Hinweise zum Übungsblatt Formatierung von Text:

Datenexport aus JS - Software

Objektorientierte Programmierung. Kapitel 12: Interfaces

-Inhalte an cobra übergeben

Stay here to be there!

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Das Leitbild vom Verein WIR

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Bedienungsanleitung Albumdesigner. Neues Projekt: Bestehendes Projekt öffnen:

Datensicherung. Beschreibung der Datensicherung

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Senioren helfen Junioren

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Bauteilattribute als Sachdaten anzeigen

Elternzeit Was ist das?

1 Vom Problem zum Programm

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Übungen zu C++ Kapitel 1

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Transkript:

Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der OOP gar nicht erst anzufangen. 4.1 Eigenschaften 4.1.1 Schlüssel und Element s in PHP muss man verstanden haben. Ihre recht uneingeschränkte Anwendung erlaubt ein sehr effizientes Programmieren. In anderen Programmiersprachen werden eindimensionale Felder, mehrdimensionale Felder, numerisch indizierte s, Hashtabellen usw. unterschieden. Alle diese Konstruktionen werden in PHP vom Typ array abgedeckt. Dabei liegt es in der Verantwortung des Programmierers, sich für eine bestimmte zweckgebundene Struktur zu entscheiden. Ein PHP- besitzt folgende Eigenschaften: Ein enthält keins, eins oder mehrere Elemente. Jedes Element hat immer einen Schlüssel Key, Index und einen Wert Value. Der Schlüssel ist eine ganze Zahl int oder ein Name string. Der Wert kann wie bei einer Variablen beliebigen Typs sein. Nach der Theorie hilft nur die Praxis weiter. $obst = array'apfel', 'Birne', 'Pflaume'; print_r$obst; [0] => Apfel 57

Arbeiten mit s [1] => Birne [2] => Pflaume Listing 4.1: Beispiel array1.php Die Funktion array erzeugt ein. Im Beispiel sind drei Elemente enthalten mit den Zeichenkettenwerten 'Apfel', 'Birne' und 'Pflaume'. Die Schlüssel sind numerisch und werden automatisch erzeugt, beginnend mit dem Wert 0. Im nächsten Beispiel wird dasselbe erzeugt, aber mit expliziter Angabe der Schlüssel. Der Operator => verbindet einen Schlüssel mit seinem Wert. $obst = array0 => 'Apfel', 1 => 'Birne', 2 => 'Pflaume'; print_r$obst; Listing 4.2: Beispiel array2.php Das folgende, numerisch indizierte scheint»lücken«zu haben. Besser gesagt: Es ist dem egal, ob die Schlüssel eine lückenlose numerische Folge darstellen oder nicht. Es muss nicht mal eine Folge sein. $obst = array0 => 'Apfel', 7 => 'Birne', 293 => 'Pflaume'; print_r$obst; [0] => Apfel [7] => Birne [293] => Pflaume Listing 4.3: Beispiel array3.php Ebenso ist es dem egal, ob seine Schlüssel numerisch sind oder Namen haben. Wichtig Schlüssel-Namen immer korrekt als Zeichenketten-Literal schreiben; also in Quotes setzen. Andernfalls besteht Verwechslungsgefahr mit Konstanten. 58

4.1 Eigenschaften $obst = array'zuerst' => 'Apfel', 'dann' => 'Birne', 'zuletzt' => 'Pflaume'; print_r$obst; [zuerst] => Apfel [dann] => Birne [zuletzt] => Pflaume Listing 4.4: Beispiel array4.php Da die Art der Indizierung egal ist, ist auch eine Mischung erlaubt. Was sein darf, heißt noch lange nicht, dass man es auch so machen muss. In den meisten Fällen wird nur eine bestimmte Art der Indizierung sinnvoll sein. $obst = array0 => 'Apfel', 'dann' => 'Birne', 5 => 'Pflaume'; print_r$obst; [0] => Apfel [dann] => Birne [5] => Pflaume Listing 4.5: Beispiel array5.php Ein mehrdimensionales entsteht, wenn man einem -Element ein anderes zuweist. Auch hier darf die Indizierung beliebig sein. Hinweis Es gibt verschiedene Funktionen, die mit s arbeiten. Einige davon erwarten numerisch indizierte s mit lückenloser Nummerierung ab dem Wert Null. Es immer richtig, im Handbuch nachzuschauen, welche Anforderungen eine bestimmte Funktion von einem erwartet. 59

Arbeiten mit s Zusammenfassend können wir s als Kollektion von Elementen verstehen, die durch Schlüssel Key, ganzzahlig oder Zeichenkette, indiziert sind und einen Wert Value beliebigen Typs haben dürfen. Außer, dass sie unikat sein müssen, gibt es keine weiteren Einschränkungen in der Wahl der Schlüssel. Bezüglich Größe und Typ des Wertes verhält sich ein -Element nicht anders als eine reguläre PHP-Variable. 4.1.2 -Elemente ansprechen Gibt man den Schlüssel eines -Elements in eckigen Klammern hinter dem -Namen an, wird das betreffende -Element angesprochen. Diese Index- Schreibweise ist in den meisten bekannten Programmiersprachen üblich. Das folgende Beispiel ist daher wahrscheinlich sofort verständlich. # s erzeugen $myay1 = array'apfel', 'Birne', 'Pflaume'; $myay2 = array'name' => 'Beispiel', 'vorname' => 'Knut'; # -Elemente lesen print 'Das zweite Element von $myay1: '.$myay1[1]."\n"; print 'Das zweite Element von $myay2: '.$myay2['vorname']."\n"; # -Elemente beschreiben $myay1[0] = 'Erdbeere'; $myay2['name'].= '-Hohenfeld'; # s komplett ausgeben print_r$myay1; print_r$myay2; [0] => Erdbeere [1] => Birne [2] => Pflaume [name] => Beispiel-Hohenfeld [vorname] => Knut Listing 4.6: Beispiel array6.php 60

4.1 Eigenschaften Das Beschreiben eines nicht vorhandenen -Elements lässt PHP automatisch das passende erzeugen. # $ay1, $ay2 und $ay3 gibt es noch nicht $ay1[4] = 'Hallo'; $ay2[] = 'Welt'; $ay3[2][7] = 'geht doch'; # Aber danach: print_r$ay1; print_r$ay2; print_r$ay3; [4] => Hallo [0] => Welt [2] => [7] => geht doch Listing 4.7: Beispiel array7.php Die implizit erstellten s enthalten genau die im Programmcode benannten Elemente und keine weiteren. Wird wie bei $ay2[] kein Schlüssel angegeben, so wird numerische Indexierung angenommen. Existiert das noch nicht wie im Beispiel, beginnt die Zählung erwartungsgemäß bei 0. Existiert das bereits, wird ein Element mit dem nächsten numerischen Schlüssel hinzugefügt. Ein mehrdimensionales im Sinne von Indexierung und Unter-Indexierung würde Elemente nach dem Muster $ay[2,7] enthalten. Das gibt es in PHP nicht. 61

Arbeiten mit s Das $ay3 im Beispiel ist in gewisser Weise mehrdimensional. Allerdings so, dass das -Element $ay3[2] selbst ein ist, welches das Element $ay3[2][7] enthält. Eine Mehrdimensionalität lässt sich also mit s und Unter-s verwirklichen. Auch hier gibt es keine Grenze, sodass auf diese Weise auch Baumstrukturen realisierbar sind. 4.1.3 Einige -Funktionen Möchte man einem numerisch indizierten Elemente in einer Schleife hinzufügen, dann kann die Funktion array_push günstig eingesetzt werden. $anzahl = array_push$my, $mywert; Listing 4.8: Aufrufbeispiel der Funktion array_push Die Funktion erwartet im ersten Argument das und danach einen oder mehrere Werte. Jeder Wert wird als neues -Element eingetragen und erhält automatisch den nächsten numerischen Schlüssel. Nach dem Hinzufügen der neuen Elemente wird die aktuelle Anzahl der -Elemente zurückgegeben. asort$my, Flag; Listing 4.9: Aufrufschema der Funktion asort Die Sortierfunktion asort behandelt ein als assoziatives und zerstört nicht die Verbindung zwischen Schlüssel und Wert. Im Listing 4.9 ist Flag symbolisch gemeint. Als Flag werden Konstanten notiert, die die Sortierung der -Elemente nach ihrem Wert beeinflussen. Die Konstante SORT_NUMERIC beispielsweise sortiert numerisch, SORT_STRING dagegen fasst die Werte als Zeichenketten auf. $part = pathinfo'/opt/lampp/htdocs/bild.png' # $part['dirname'] enthält '/opt/lampp/htdocs' # $part['basename'] enthält 'bild' # $part['extension'] enthält 'png' Listing 4.10: Aufrufbeispiel der Funktion pathinfo Recht viele Informationen lassen sich in ein überführen. So ist das Zerlegen eines Pfadnamens in seine Bestandteile ein häufig wiederkehrendes Problem. Die Funktion pathinfo erzeugt ein, in dem sich die Bestandteile des angegebenen Pfadnamens in Elementen mit festgelegten Schlüsselnamen wiederfinden. Die Kommentare im Listing 4.10 zeigen das Ergebnis für das Aufrufbeispiel. 62

4.2 s in andere Strukturen konvertieren 4.2 s in andere Strukturen konvertieren 4.2.1 s und Variablen Möchte man Variablenwerte in ein übertragen, ist das überhaupt kein Problem. $f1 = 'Apfel'; $f2 = 'Birne'; $f3 = 'Pflaume'; $ay = array$f1, $f2, $f3; print_r$ay; [0] => Apfel [1] => Birne [2] => Pflaume Listing 4.11: Beispiel array8.php Hier wurde ein explizit erstellt und die Variablen $f1 bis $f3 lieferten die Werte. Völlig anders geht die Funktion compact vor. $obst = 'Apfel'; $ist = 'Birne'; $gesund = 'Pflaume'; $ay = compact'obst', 'ist', 'gesund'; print_r$ay; [obst] => Apfel [ist] => Birne [gesund] => Pflaume Listing 4.12: Beispiel array9.php 63

Arbeiten mit s Die Funktion compact erwartet Variablennamen als Zeichenketten und erstellt ein Namen-indexiertes. Das Umgekehrte ist auch möglich, und zwar mit der Funktion extract. Nach Ausführung der Funktion existieren Variablen, deren Namen den Element-Schlüsseln und deren Werte den Element-Werten des angegebenen s entsprechen. $ay = array'f1' => 'Apfel', 'f2' => 'Birne', 'f3' => 'Pflaume'; print "Variablen: $f1, $f2, $f3\n"; extract$ay; print "Variablen: $f1, $f2, $f3\n"; Variablen:,, Variablen: Apfel, Birne, Pflaume Listing 4.13: Beispiel array10.php Das war noch nicht alles. Eventuell möchten Sie Werte eines s in vorhandene Variablen übertragen beziehungsweise die Variablennamen selbst festlegen. $ay = array'apfel','birne','pflaume'; $a = 'Aha'; list$a, $b, $c = $ay; print "Variablen: $a, $b, $c\n"; Variablen: Apfel, Birne, Pflaume Listing 4.14: Beispiel array11.php Mithilfe von list erhalten die als Argument verwendeten Variablen die - Werte nacheinander zugewiesen. Die Funktion überschreibt bereits vorhandene Variablen im Beispiel $a und legt nicht vorhandene an im Beispiel $b, $c. Bei list gibt es Einschränkungen. Es können nur Werte von s bezogen werden, die numerisch indexiert sind. Die Wert-Übernahme beginnt beim Element mit dem Schlüsselwert 0 und geht weiter in direkt aufsteigender Folge. Wäre das Element $ay[1] nicht vorhanden, würde die Variable $b im Beispiel keinen Wert aus dem bekommen. 64

4.2 s in andere Strukturen konvertieren 4.2.2 s und Zeichenketten Eine große Hilfe sind s bei der Bearbeitung von Texten. Wir demonstrieren das anhand des folgenden Beispieltextes, der in der Datei beispieltext.txt festgehalten ist. Das ist ein mehrzeiliger Beispieltext, der einfach nur den Zweck hat, ein Text zu sein. Listing 4.15: Datei beispieltext.txt Als Erstes könnten wir versuchen, diesen Text in einzelne Zeilen zu fassen. Die Funktion file_get_contents holt den Text aus der Datei und schreibt ihn unverändert in eine Variable. Danach hilft explode weiter. Und wie man erkennt, ist diese Erklärung länger als der Programmcode. $text = file_get_contents'beispieltext.txt'; $ay = explode"\n", $text; print_r$ay; [0] => Das ist ein [1] => mehrzeiliger Beispieltext, [2] => der einfach nur den Zweck hat, [3] => ein Text zu sein. [4] => Listing 4.16: Beispiel array12.php Die Funktion zerlegt die Zeichenkette anhand des Trennzeichens im ersten Argument. Als Trennzeichen wurde Zeilenwechsel angegeben, und so ergibt sich eine zeilenweise Teilung. Ebenso könnte man den Punkt als Trennzeichen angeben und den Text so in Sätze teilen. Der folgende Programmcode teilt die dritte Zeile in einzelne Wörter durch Angabe des Leerzeichens als Trennzeichen. # dritte Zeile zerlegen: $line_ay = explode' ', $ay[2]; print_r$line_ay; 65

Arbeiten mit s [0] => der [1] => einfach [2] => nur [3] => den [4] => Zweck [5] => hat, Listing 4.17: Weiter im Beispiel array12.php Natürlich kann man umgekehrt auch den Inhalt eines s in Text verwandeln. Die Funktion, die das bewirkt, heißt treffend implode. $myay1 = array'apfel', 'Birne', 'Pflaume'; $myay2 = array'vorname' => 'Knut', 'name' => 'Beispiel'; $text = implode' ', $myay2.' isst gern dieses Obst: '.implode',',$myay1; print $text."\n"; Knut Beispiel isst gern dieses Obst: Apfel,Birne,Pflaume Listing 4.18: Beispiel array13.php Die Funktion wurde zweimal angewandt, einmal mit dem Leerzeichen andermal mit Komma als Trennzeichen. Und falls wir diesen Text in einer Datei speichern möchten, bietet file_put_contents die einfachste Lösung. 66