Hallo, Gast
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.

Benutzername
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 389
» Foren-Beiträge: 520

Komplettstatistiken

Benutzer Online
Momentan sind 10 Benutzer online
» 0 Mitglieder
» 5 Gäste
AhrefsBot, Bytespider, DotBot, Semrush, bot

Aktive Themen
Thursday - 21:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 06:06
» Antworten: 0
» Ansichten: 6
Thursday - 13:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 10:07
» Antworten: 0
» Ansichten: 2
Thursday - 12:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 08:21
» Antworten: 0
» Ansichten: 2
Thursday - 11:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 07:51
» Antworten: 0
» Ansichten: 1
Thursday - 10:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 06:51
» Antworten: 0
» Ansichten: 1
Thursday - 09:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 05:21
» Antworten: 0
» Ansichten: 1
Thursday - 07:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 04:16
» Antworten: 0
» Ansichten: 1
Thursday - 06:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 03:13
» Antworten: 0
» Ansichten: 2
Thursday - 05:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 02:07
» Antworten: 0
» Ansichten: 1
Thursday - 04:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
16-05-2024, 01:29
» Antworten: 0
» Ansichten: 1

 
  Formularfeld trimmen
Geschrieben von: Joopi - 07-01-2023, 11:06 - Forum: Programmieren - Keine Antworten

Dann und wann schleichen sich beim Eingeben von Werten gerne mal Leerzeichen am Beginn oder Ende ein. Besonders dann, wenn man diese Werte aus anderen Texten oder Webseiten kopiert und in die Zwischenablage eingügt. Die Leerzeichen werden dann mit in die Datenbank geschrieben und führen oftmals dazu, dass später diese Werte bei Suchabfragen nicht im Ergebnis auftauchen.

Hier hilft die Funktion trim.

PHP-Code:
<?php
    trim
($_REQUEST['n_ipdec_von']);
?>

PHP-Code:
<?php
    $n_ipdec_von 
trim($_REQUEST["n_ipdec_von"]);
?>

Analog zur Prüfung, ob ein Formularfeld überhaupt gefüllt ist, ist das Trimmen m.E. eine unverzichtbare Maßnahme, um eben keine falschen Werte in die Tabellen zu erfassen.

Drucke diesen Beitrag

  Error-Reporting
Geschrieben von: Joopi - 07-01-2023, 11:03 - Forum: Programmieren - Keine Antworten

Wenn man ein PHP-Skript erstellt, dann kommt es unweigerlich zu Problemen, weil der Programmcode nicht korrekt ist. Nach meinem Verständnis gibt es drei Kategorien von Meldungen, die PHP ausgibt:

  • PHP Notice
  • PHP Warning
  • PHP Error

Während der Entwicklungsphase macht es Sinn, die Meldung ausgeben zu lassen, um schnell auf Fehler im Programmcode oder -logik reagieren zu können.

Aber auch während der Entwicklungsphase kann es sinnvoll sein, das Error-Reporting einzuschränken oder gar zu unterbinden. Das muss dann jeder Programmierer mit sich selber ausmachen.

Es gibt nun mehrere Möglichkeiten, die ich nutzen könnte. Will ich z.B. zu einer Codezeile verhindern, dass eine PHP-Meldung ausgegeben wird, so kann dies über das **@**-Zeichen gesteuert werden.

PHP-Code:
<?php
    $parts 
= @$structure->parts;
?>

Mit dem @-Zeichen wird die Ausgabe einer möglichen Meldung verhindert, sollte z.B. in der Struktur gar kein Element *parts* enthalten und für den kompletten Programmablauf nicht hinderlich sein.

Um im gesamten Programm wirklich alle Fehlermeldungen zu unterbinden, sollte in der ersten Zeile des PHP-Skripts folgendes stehen:

PHP-Code:
<?php
    error_reporting
(0);
?>

Das ist natürlich nicht gut, denn sollte es Fehler geben, die sich wirklich, und vor allem negativ, auf den Programmablauf auswirken, ist man mit

PHP-Code:
<?php
    error_reporting
(E_ALL & ~E_NOTICE);
?>

besser bedient.

Wie gesagt, in der Entwicklung eines PHP-Skripts sind Meldungen wichtig für den Programmierer. Sobald das Tool fertig und produktiv gehen kann, sollten auf jeden Fall die Meldungen unterbunden werden. Was geht es dem gemeinen Internet-User an, welche Meldungen ein Skript aus welchen Gründen auch immer verursacht.

Drucke diesen Beitrag

  Eingebettetes Thumbnail extrahieren
Geschrieben von: Joopi - 07-01-2023, 11:00 - Forum: Programmieren - Keine Antworten

Durch meine Fotografie habe ich viel mit Fotos zu tun. Ich möchte gerne meine eigene Galerie programmieren und benötige dafür auch Informationen aus den EXIF-Daten der erzeugten Dateien. Nicht alle Dateien haben diese Daten, aber die, die ich mit meinen Fotokameras mache, haben sie.

In diesen Daten sind auch die Quelldaten für ein Thumbnail, also für eine Miniaturansicht, enthalten. Man kann sie auf verschiedene Art und Weise Thumbnails extrahieren, um diese auf der Webseite anzuzeigen, die dann wieder auf die echten Fotos verlinken. Das spart auf jeden Fall Ressourcen beim Laden der Webseite.

Wiederum gibt es zwei Möglichkeiten, um die eingebetteten Thumbnails zu extrahieren. Entweder man erzeugt sie zur Laufzeit und gibt sie direkt auf der Webseite aus oder man erzeugt diese Thumbnails physisch und bindet sie dann über den IMG-Tag ein.

Nachfolgend ist ein Script aufgeführt, welches ich heute mit Hilfe einiger Quellen, meist php.net, zusammengestellt habe. Für mein Vorhaben reicht das im Moment und kann durchaus durch andere genutzt werden, wenn die individuellen Parameter angepasst werden.

PHP-Code:
<?php

$pfad 
"/home/tuennes/help/help5/";
$bildbig "jpg_big.jpg";
$thumbnail "thumb_jpg_big.jpg";

// Das ist die Quelle mit dem normelen großen Bild, welches das Thumbnail beinhalten kann
$picture $pfad.$bildbig;

// Das ist das resultierende Thumbnail, sofern das normale Bild ein Thumbnail beinhaltet
$output_file $pfad.$thumbnail;

// Den Quellcode aus dem großen Foto für ein etwaig eingebettetes Thumbnail ausfindig machen
$image exif_thumbnail($picture$width$height$type);

// Sofern ein Thumbnail enthalten ist, wird dieser genutzt und ein Bild erstellt.
if ($image!==false) {
    header('Content-type: ' .image_type_to_mime_type($type));

    // Die Datei wird zum Schreiben geöffnet
    $fp fopen($output_file"w+");

    // write the data in image file
    // Wichtig ist, dass die Variable $image nur den Quellcode des Thumbnails beinhaltet. Dieser Quell wird über base64_encode zunächst in Base64 kodiert,
    // muss aber für die Erzeugung eines physischen Bildes dann wieder mittels base64_decode decodiert werden.
    fwrite($fpbase64_decode(base64_encode($image)));

    // close an open file pointer
    fclose($fp);

// Ob das Bild erstellt wurde, wird sofort geprüft
    if (file_exists($output_file)) {
        echo "Die Datei wurde erstellt.\n";
    }
    else {
        echo "Die Datei wurde nicht gefunden, daher wurde sie nicht estellt.\n";
    }
}
// Enthielt das große Bild kein eingebettetes Thumbnail, wird eine entsprechende Meldung ausgegeben.
else {
    // kein Miniaturbild vorhanden. Fehler wird hier verarbeitet
    echo "Kein Miniaturbild verfügbar\n";
}

?>

Für meine Ideen ist diese einfache Art und Weise der Thumbnailerstellung sehr gut geeigent. Meine eigenen Bilder sollten alle ein Thumbnail enthalten, da ich die EXIF-Daten auf keinen Fall lösche und für meine Galerie nutzen möchte.

Die andere Variante mit der Erstellung der Thumbnails zur Laufzeit habe ich noch nicht ausprobiert.

Drucke diesen Beitrag

  Eingabefeld prüfen
Geschrieben von: Joopi - 07-01-2023, 10:58 - Forum: Programmieren - Keine Antworten

Auf dem lokalen Rechner habe ich einige Webseiten mit PHP und MySQL erstellt. Über diese Seiten werden Daten mittels HTML-Formulare in Datenbanken bzw. Tabellen geschrieben. Da ich alleine mit diesen Formularen arbeite, ist eine absolute Sicherheit für eine vernünftige Erfassung nicht in meinem Fokus gewesen.

Allein meine Faulheit, leere Einträge in den Tabellen korrigieren zu müssen, haben mich veranlasst, die Formular sicherer zu machen. Nun werden die Inhalte der jeweilige Formularfelder geprüft. Wenn ein Feld leer ist, dann wird der Insert-Befehl nicht ausgeführt.

Die Prüfung sieht z.B. so aus:

PHP-Code:
<?php
    
if (empty($_REQUEST["n_mailaddi"])) {

        echo "Das Feld ist leer. Bitte eine Mailadresse eingeben.";

        echo "<a href=\"some_form_mailadressen.php\">";
        echo "<button type=\"button\">Mail eingeben</button>";
        echo "</a>";
    }
?>

Nun wird es keine Tabelleneinträge mehr geben, die mit leeren Feldern für die Mailadresse aufwarten.

Ich habe jetzt natürlich dieses Prinzip auf alles meine Formulare angewendet. Eigentlich sollte es bei der Erstellung von Formularen ein Standard sein, aber ich hatte das nicht so im Fokus vor 10 Jahren.


Es noch andere, weil auch bessere Methode. Es wäre sinnvoll, ID-/Namenfelder einzufügen und darüber die Prüfung ablaufen zu lassen.

Drucke diesen Beitrag

  JSON-Datei auslesen
Geschrieben von: Joopi - 07-01-2023, 10:54 - Forum: Programmieren - Keine Antworten

Mit json-Dateien arbeite ich im Grunde genommen nie. Zumindest nicht im privaten Bereich. Im beruflichen Umfeld muss ich nun mit json-Datei, die als Konfigurationsdateien dienen, arbeiten.

Generell, so habe ich es verstanden, dienen json-Dateien zum Datenaustausche. Das bedeutet, dass man in der Lage sein muss, die Inhalte einer json-Datei auszulesen und zu verwerten.

Die einfachste Art, um eine json-Datei auszulesen, ist folgende:

PHP-Code:
<?php
    $JsonParser 
file_get_contents("test_json.json");
    var_dump($JsonParser);
?>

Hierbei wird der komplette Inhalt der Datei ausgegeben. Man kann die Daten aber so nicht direkt verarbeiten. Es muss also anders angegangen werden.

Das Zauberwort ist mal wieder array verbunden mit json_decode.

PHP-Code:
<?php
    $Json 
file_get_contents("test_json.json");
    // Converts to an array 
    $myarray json_decode($Jsontrue);
    var_dump($myarray); // prints array
?>

Da eine json-Datei sturkturiert aufgebaut ist, ist es auch wohl relativ simpel diese Struktur in ein Array zu übernehmen. Die Verarbeitung von Arrays finde ich immer recht spektakulär, wenn ich ehrlich bin.

Die von mir genutzte Datei hat folgenden Inhalt (die Altersangabe habe ich dazugefummelt):

Zitat:[
    {
        "id": "01",
        "name": "Olivia Mason",
        "designation": "System Architect",
        "alter":
            {
            "jahre": 56
            }
    },
    {
        "id": "02",
        "name": "Jennifer Laurence",
        "designation": "Senior Programmer",
        "alter":
            {
            "jahre": 41
            }
    },
    {
        "id": "03",
        "name": "Medona Oliver",
        "designation": "Office Manager",
        "alter":
            {
            "jahre": 27
            }
    }
]

Eine einfache Auswertung bzw. Ausgabe könnte die zeilenweise Darstellung der 3 Datensätze sein und wird wie folgt erzeugt:

PHP-Code:
<?php
    
foreach($myarray AS $value) {
        echo $value["id"] . " " $value["name"] . " " $value["designation"] . " " $value["alter"]["jahre"] . "\n";
    }
?>

Damit werden alle drei Datensätze ausgegeben. Das Array hat quasi zwei Ebenen. Die Altersangabe ist eben auch auszugeben und muss entsprechend angepackt werden.

Will man nur bestimmte Datensätze sehen, so kann via IF-Abfrage eine Ausgabemenge zu steuern:

PHP-Code:
<?php
    
foreach($myarray AS $value) {
        if ($value["id"] == "02") {
            echo $value["id"] . " " $value["name"] . " " $value["designation"] . " " $value["alter"]["jahre"] . "\n";
        }
    }
?>

In diesem Fall wird nur der Datensatz ausgegeben, der im Feld ID den Wert 02 stehen hat.

Ob ich jemals etwas mit json-Dateien machen werde, kann ich nicht sagen. Eine Anwwendung hätte ich im Bereich der Hugo-Installationen, denn via json-Dateien kann man Datenbankanwendungen darstellen und Tabellen ausgeben.

Drucke diesen Beitrag

  Der Huddel mit den Zeichensätzen
Geschrieben von: Joopi - 07-01-2023, 10:50 - Forum: Programmieren - Keine Antworten

Der Huddel mit den Zeichensätzen ist nicht immer einfach zu bewerkstelligen.

Ein Datenbankeintrag in meiner lokalen Umgebung sieht wie folgt aus:

Zitat:I'm

Auf meinem Webspace sieht er aber so aus:

Zitat:I�m

Nach meiner bisherigen Recherche ist hier eine Vermischung von einem ISO-8859-1-Zeichen in einer UTF-8-Umgebung für die Darstellung verantwortlich.

Folgende Erklärung habe ich hier gefunden:


Zitat:Ein Beispiel für das Wort _Höhe_:

UTF-8-Text in ISO-8859-1/9/13-16-Umgebung

_Höhe_ → _Höhe_.

ISO-8859-1-Text in UTF-8-Umgebung

_Höhe_ → _H_�_he_ bzw. Fehlermeldung mit Abbruch. Ein Byte mit dem Hexadezimalwert _F6_ ist in UTF-8 nicht zulässig. Es ist üblich, für nicht konvertierbare Zeichen das [url=https://de.wikipedia.org/wiki/Ersetzungszeichen "Ersetzungszeichen"]Ersetzungszeiche[/url]n (U+FFFD) einzufügen.

Eine Lösung habe ich insofern gefunden, als das oftmals ein Zeichensatz falsch deklariert wird. Bedeutet, es gibt Verwechslungen zwischen windows-1252 und ISO-8859-1.

Die Lösung meines Problems war folgende Zeile im PHP-Script:

PHP-Code:
<?php
    
//$mailtext_neu = mb_convert_encoding($mailtext_neu, "UTF-8", "windows-1252");
    $mailtext_neu iconv('windows-1252''UTF-8'$mailtext_neu);
?>

Beide Varianten funktionieren und konvertieren den scheinbar nicht in UTF-8 vorliegenden Text korrekt um.

Gefunden habe ich die Lösung hier:

PHP: Problems converting "’" character from ISO-8859-1 to UTF-8

Drucke diesen Beitrag

  DB-Abfragen in Funktionen auslagern
Geschrieben von: Joopi - 07-01-2023, 10:44 - Forum: Programmieren - Keine Antworten

Endlich habe ich es nicht nur geschafft, dass ich Datenbankabfragen in externe Scripte auslagere, sondern ich habe es zudem auch endlich mal begriffen.

Bislang schreibe ich immer alles in ein PHP-Script. Nur die Zugangsdaten für die Datenbankabfrage habe ich bereits vor Jahren ausgelagert und greife über eine include-Anweisung darauf zu.

Nun habe ich zwei weitere Scripte, neben dem DB-Include, erstellt. Im ersten Script wird die Datenbankverbindung aufgebaut, im zweiten Script werden die Datenbankabfragen innerhalb von Funktionen durchgeführt.

Die Funktionsergebnisse kann ich dann im Hauptscript nutzen. Dadurch wird das Hauptscript übersichtlicher.

Mein Vorgehen kommt aus der prozdualen Ecke. Die liegt mir mehr als die objektorientierte Methode. Mir liegt es nicht an Geschwindigkeit, sondern eher am einfachen Erstellen weiterer Script in anderen Projekten.

Und ich bin mir sicher, dass ich noch mehr auslagern kann und der geneigte Fachmann mal wieder einen Schenkelklopfer loslässt. Das ist mir aber egal. Ich habe endlich das, was ich seit langer Zeit brauche. Erweiterungen und Verfeinerungen können irgendwann angeflanscht werden.

Insgesamt gibt es also 4 Scriptdateien:

Datenbankzugangsparameter

PHP-Code:
<?php
    
/* Zugangsparameter */
    $host "localhost";
    $user "user";
    $pwd "passwort";
    /* Datenbanken */
    $dbname001="datenbank";
    /* Tabellen */
    $tblname001="user";
    $tblname002="userdetail";
    $tblname003="session";
?>

Datenbankverbindungsaufbau

PHP-Code:
<?php
    
include("db_connect.inc.php");

    $db mysqli_connect($host$user$pwd$dbname004);

    if(!$db) {
        exit("Verbindungsfehler: ".mysqli_connect_error());
    }
?>

Datenbankfunktionen

PHP-Code:
<?php
    
// Der spätere Aufruf ist: php php_test_funktion_slave.php

    $query_vg 0;

    // Definition der Funktion, wobei die DB-Verbindung ausgelagert wurde.
    function vorgang($db){
        include("php_test_funktion_db.php");
        $query_vg mysqli_query($db"SELECT id, mailadresse, vorname FROM $tblname021 WHERE id >= 35");
        return $query_vg;
    }
?>

Mainscript mit Nutzung der Funktionsergebnissen

PHP-Code:
<?php
    error_reporting
(E_ALL);

    include("php_test_dbfunktion.php");

    // Aufnahme des Funktionsergebnisses
    $result_vg vorgang($query_vg);

    // Ausgabe des Funktionsergebnisses
    while($row_vg mysqli_fetch_row($result_vg)) {
        echo "<p>Das ist die ID: " $row_vg[0] . "</p>\n";
    }
?>

Ich bin derzeit sehr zufrieden, dass ich nun endlich die Datenbeschaffung und die Datenverwendung trennen kann. Immer alles in einem Script abzuhandeln ist besonders bei umfangreichen Projekten und Scripten sehr anstrengend. Hier kann ich nun sehr viel Übersicht gewinnen und die Pflege des Programmcodes optimieren.

Diese Funktionen setze ich nur auf dem lokalen Rechner ein. Auf meinen externen Webspaces habe ich Datenbanken und damit verbundene Abfragen auf ein Minimum reduziert. Das Umschreiben dieser Script spare ich mir derzeit, bis ich mehr weiß und mehr Sicherheit im Umgang mit derartigem Vorgehen habe.

Drucke diesen Beitrag

  Auswertung von stdClass
Geschrieben von: Joopi - 07-01-2023, 10:36 - Forum: Programmieren - Keine Antworten

Über eine foreach-Schleife ist es relativ einfach ein assoziatives Array auszugeben. Standardmäßig könnte es so aussehen:


PHP-Code:
<?php
    
// Aufnahme der Daten einer IMAP-Verbindung in eine Variable, die ein assoziatives Array speichert
    
$imap imap_check($mbox);

    
// Ausgabe des assoziativen Array mit seinen Properties für key und value
    
foreach ($imap as $detailkey => $detailwert) {
        echo $detailkey .": " $detailwert "\n";
    }
?>

Die Ausgabe von var_dump() sieht so aus:

Zitat:object(stdClass)#1 (5) {
  ["Date"]=>
  string(37) "Tue, 11 Jan 2022 16:36:02 +0100 (CET)"
  ["Driver"]=>
  string(4) "imap"
  ["Mailbox"]=>
  string(94) "{das sind die Verbindungsinformationen und daher nicht für die Öffentlichkeit bestimmt}INBOX"
  ["Nmsgs"]=>
  int(10)
  ["Recent"]=>
  int(0)
}

Mein Problem war nun, dass mich im Grunde genommen nur die Anzahl der im Postfach vorhandenen Mails interessiert hat. Kann man auf anderem Wege ebenfalls ermitteln, aber mit imap_check wollte ich es einfach versuchen. Das Schlüsselfeld dazu ist: Nmsgs

Es hat einige Zeit gedauert, bis mir klar war, wie ich diesen einen Wert herausholen kann, ohne alle anderen Werte auch aufzulisten oder zu erhalten. Die Anzahl der Mails brauche ich für eine for-Schleife, also muss ich diesen Wert separieren. Das ganze Array nützt mir nichts und ist hinderlich.

Letztlich ist es recht einfach, wenn man weiß, mit was man es zu tun hat. Die Codezeile, die mir den gewünschten Wert präsentiert, ist.

PHP-Code:
<?php echo "Das ist die Anzahl der enthaltenen Mails: " $imap->Nmsgs "\n"?>

Da es sich, soweit ich das verstanden habe, bei stdClass um ein Objekt handelt, muss ich hier anders vorgehen als ich es eigentlich gewohnt bin. Objekte sind auch in anderer Hinsicht und in anderen Vorhaben noch nicht meine Freunde - es wird aber so langsam.

Als Ergebnis der obigen Codezeile wird dann folgendes ausgegeben.

Zitat:Das ist die Anzahl der enthaltenen Mails: 10

Und damit ist der Wert für die Anzahl der Mails im Postfach ermittelt und kann im nachfolgenden Programmcode genutzt werden. Die Übernahme in eine Variable ist dann auch für mich recht einfach.

Drucke diesen Beitrag

  PHP auf Konsole ausführen
Geschrieben von: Joopi - 07-01-2023, 10:32 - Forum: Programmieren - Keine Antworten

Es ist mögich, ein PHP-Script (oder eine PHP-Befehlszeile) auf der Konsole bzw. in einem Shellscript auszuführen.

Das ist der Inhalt des PHP-Scripts:

PHP-Code:
<?php echo "Hallo Welt auf der Konsole!\n"?>

Folgender Befehl auf der Konsole führt ein PHP-Script aus:

Code:
php hallo_welt_konsole.php

Das Ergebnis ist wie folgt (steht so im PHP-Script):

Zitat:Hallo Welt auf der Konsole!

Drucke diesen Beitrag

  Array ausgeben
Geschrieben von: Joopi - 07-01-2023, 10:31 - Forum: Programmieren - Keine Antworten

Wer sich mit der Programmierung beschäftigt, kommt über kurz oder lang mit dem Datentyp ARRAY in Berührung. Egal in welcher Programmiersprache man unterwegs ist, das Array ist ein sehr wichtiges Instrument. Und ich tue mich damit von Anbeginn an schwer - also seit Jahrzehnten.

Ich habe immer Arrays genutzt, aber nie wirklich verstanden und einfach nur aus Vorlagen abgeschrieben. Oftmals musste ich lange daran herumfummeln, um die Syntax für mich gängig zu machen und ein brauchbares sowie richtiges Ergebnis zu erzielen.

Nun habe ich in PHP ein bisschen probiert. Dieses Ausprobieren hat nicht im Browser stattgefunden, sondern ich habe kleine PHP-Scripte geschrieben und diese auf der Konsole ausführen lassen. Somit musste ich mich nicht mit der Ausgabe via PHP-/HTML-Auszeichnungen befassen, sondern konnte mich auf die reine Syntax und die selbstgestellte Aufgabe konzentrieren.

Als erstes ist es wichtig zu wissen, in welcher Schreibweise ein bereits gefülltes Array im Programmcode zu nutzen ist. Es gibt verschiedene Möglichkeiten, um ein Array zu deklarieren und mit Werten zu füllen bzw. hart programmiert zu füllen.

Da ich die Werte im Array später weiter nutzen möchte, habe ich das Array in eine Variable übernommen:

PHP-Code:
<?php
    $vornamen 
= array("Hans""Dieter""Horst");
?>

Auf dieses Array kann ich dann zugreifen, indem ich die Variable sowie ein Element aus dem Array in der Konsole ausgeben lasse:

PHP-Code:
<?php
    
echo "Das ist der Vorname im ersten Element des Arrays: " $vornamen[0] . "\n";
?>

Das ist die Ausgabe in der Konsole dazu:

Zitat:Das ist der Vorname im ersten Element des Arrays: Hans

Möchte ich alle Elemente eines Arrays verarbeiten, z.B. in der Konsole ausgeben lassen, dann komme ich nicht um eine Schleife umhin. Mit einer foreach-Schleife ist die Ausgabe in der Konsole (oder später auch in einer Datei oder Datenbank) machbar:

PHP-Code:
<?php
    
foreach($vornamen as $vorname) {
        echo $vorname ."\n";
    }
?>

Das ist die Ausgabe in der Konsole dazu:

Zitat:Hans
Dieter
Horst

Für meine Vorhaben brauche ich später die Anzahl der im Array enthaltenen Elemente. Es gibt viele Lösungsansätze. Aber der wohl einfachste geht über die count-Funktion, ohne das weitere Zählschleifen oder ähnliches programmiert werden müssen.

PHP-Code:
<?php
    
echo "Das ist die Anzahl der Elemente im Array der Vornamen: " count($vornamen) . "\n";
?>

Das ist die Ausgabe in der Konsole dazu:

Zitat:Das ist die Anzahl der Elemente im Array der Vornamen: 3

Für mich ist es sehr verwunderlich, dass ich das Prinzip des Array zwar immer verstanden habe, aber nie wirklich anwenden konnte. Wenn ich mir die obigen Programmzeilen ansehe, dann muss ich mir an den Kopf fassen. Es ist eigentlich in den Grundfunktion sehr einfach.

Die von mir angedachten Programmteile zur Nutzung von Arrays haben künftig damit zu tun, dass ich eine unbekannte Anzahl Dateien in einem Verzeichnis verarbeiten und spezielle Inhalte aus den Dateien in eine Datenbanktabelle einfügen möchte. Hier ist ein Array auf jeden Fall von Nöten. Und das natürlich kombiniert mit Schleifen. Im Gegensatz zum obigen Beispiel muss ich dann während der Programmlaufzeit das Array füllen. Auch das habe ich getestet. Dazu schreibe ich noch einen anderen Artikel. Denn das ist aufwendiger und spezieller. Hier wollte ich nur die Grundfunktion beschrieben wissen.

Ein assoziatives Array hat einen Schlüssel (Key) und einen Wert (Value). Wenn ein solches Array durchlaufen wird, wird normalerweise der Wert ausgegeben. Das könnte wie folge aussehen.

PHP-Code:
<?php
    
foreach ($imap as $detail) {
        echo $detail "\n";
    }
?>

Die Ausgabe.

Zitat:Sun, 9 Jan 2022 17:11:08 +0100 (CET)
imap
{domain.zzz:993/imap/notls/ssl/novalidate-cert/user="xxx@yyy.zzz"}INBOX
9
0

Bei dieser Art der Ausgabe weiß man aber nicht immer direkt, was mit dem Wert gemeint ist. Also macht es Sinn, den Schlüssel mitzugeben, denn dieser ist für gewöhnlich lesbar und zeigt, um was es sich bei dem Wert handelt. Das sieht dann so aus.

PHP-Code:
<?php
    
foreach ($imap as $detailkey => $detailwert) {
        echo $detailkey .": " $detailwert "\n";
    }
?>

Die Ausgabe.

Zitat:Date: Sun, 9 Jan 2022 17:17:44 +0100 (CET)
Driver: imap
Mailbox: {domain.zzz:993/imap/notls/ssl/novalidate-cert/user="xxx@yyy.zzz"}INBOX
Nmsgs: 9
Recent: 0

Nun ist ziemlich klar, dass es sich hier um Informationen zu einem IMAP-Konto handelt. Jeder fachkundige Dritte kann also mit dem Ergebnis etwas anfangen bzw. dieses interpretieren.

Oh, Schleifen!

Tja, wann wende ich *While*- und wann wende ich *For*-Schleifen an? Noch so eine Sache, die ich nie wirklich verstanden habe.

Drucke diesen Beitrag