TYPO3 Hilfen

Definition TYPO3:

Wikipedia


Info's zu TYPO3:

www.typo3wizard.com

www.sk-typo3.de


TYPO3 Schulung:

Wir selber

http://www.timerate.com/

http://www.cs2.ch/


Anleitungen für Redakteure Anleitung (arbeiten mit TYPO3)


Anleitungen für Entwickler

Extensions-Tutorials

TYPO3-Tutorials

 Programmierhilfen

Editoren:

Popup-Generator

Sitemap Generator

Banner-Generator

MetaTagGenerator

Wysiwyg Editoren

Mehr Generatoren

 

Wysiwyg-Editoren:

HTMLAREA der verbreitete

tinyRTE der bessere

 

Praktische Tools:

Pixelmesser eben Pixel messen

Colorpicker Farbwerte finden

Zwischenablage Erweiterung

 

Wissenswertes:

Reguläre Ausdrücke

ServerSideIncludes

dos-befehle

ftp-befehle

Die Google Codesuche

 

Domains registrieren:

Ripe wer wo was

Switch .ch Domains

Denic .de Domains

Network-Solution .com Domains

Register .net und alle anderen Domains

 Sicherheit im Internet

PHP Arrays, Daten speichern ohne Datenbank

Was ist ein Array

Das Array gibt es in fast jeder Programmiersprache. Es ist eine Art „Liste“ wo verschiedene Werte, Objekte oder auch wieder Array's unter einem Namen zusammengefasst verwaltet werden können. Ich möchte hier möglichst einfach und leicht verständlich die 3 gebräuchlichsten PHP-Arrays erläutern, ohne auf die vielen zusätzlichen Möglichkeiten einzugehen die sie bieten.

Bildlich dargestellt kann man das Array als eine Art Schrank mit durchnummerierten Schubladen sehen.

Grundsätzlich sprechen wir hier von folgenden 3 PHP Arrays:

1-einfaches Array (nummerisches Array)
2-assoziatives Array
3-mehrdimensionales Array


Einfacher Array
Das einfache Array besteht aus einer Liste von Elementen und einem nummerischen Index der die Elemente von Null an aufsteigend adressiert. Dabei ist zu beachten das die Adressierung bei „0“ beginnt, also das erste Element hat die Nummer 0, das zweite Element die 1, das dritte die 2, usw.
Wir möchten als Beispiel eines einfachen Arrays die Namen einer CD-Sammlung zusammenfassen, also erzeugen wir einen Array mit dem Namen „cd_sammlung“, dabei setzen wir vor den zusammenfassenden Namen ein Dollarzeichen wie bei einer Variabel.

Eingabe:
$cd_sammlung=array();

Nun kann man aber auch das Array erzeugen und gleichzeitig mit den Werten füllen:

Eingabe:
$cd_sammlung=array('Nirvana','Soundgarden', 'Nickelback', 'Beatles');

Wie das fertige Array nun wirklich aussieht, kann man mit der Funktion print_r() ausgeben:

Eingabe:
print_r($cd_sammlung);

Ausgabe:
Array ( [0] => Nirvana [1] => Soundgarden [2] => Nickelback [3] => Beatles )

Wir sehen nun das fertige Array, zusammen mit der oben schon erwähnten nummerischen Adressierung in den eckigen Klammern links (dem Schlüssel) , und rechts vom Pfeil das dazugehörige Element.
Die nun zwei wichtigsten Funktionen sind bestimmt das Ausgeben und das Hinzufügen von Werten:

Wert ausgeben zB:
echo $cd_sammlung[1];
Ausgabe: Soundgarden
oder
echo $cd_sammlung[3];
Ausgabe: Beatles

Möchten wir ein weiteres Element ans Ende des Arrays anhängen so:

Wert hinzufügen:
array_push($cd_sammlung, "Abba");

Die Menge der Möglichkeiten die man nun mit so einem Array hat ist enorm, aber bevor wir uns mit den weiteren Funktionen befassen, möchte ich noch ein anderes Arrays vorstellen nämlich das „assoziative Array”.


Assoziative Array
Der grosse Unterschied zum oben erwähnten ist das die Adressierung, also der Schlüssel beim assoziativen Array nicht einfach eine automatisch erzeugte Nummer ist, sondern vom Programmierer selber festgelegt werden muss und somit jedem Element im Array einen eigenen Schlüssel zuweist.

Als Beispiel möchten wir nun unsere Musikbands als Schlüssel benutzen und je das Land zuweisen (assoziieren) aus welchem sie kommen.

Code:
$cd_sammlung = array ( "Nirvana" => "USA", "Soundgarden"=> "USA", "Nickelback" => "Kanada", "Beatles"    => "England");

Und auch hier können wir den fertigen Array mit print_r betrachten, und wenn wir die Ausgabe noch mit dem HTML Tag „pre“ einfassen, bekommen wir eine sehr übersichtliche Ausgabe:

Eingabe:
echo "<pre>";
print_r($cd_sammlung);
echo "</pre>";

Ausgabe:
Array([Nirvana] => USA
[Soundgarden] => USA
[Nickelback] => Kanada
[Beatles] => England
)

Auch hier die zwei wichtigsten Funktionen: „das Ausgeben“ und „das Hinzufügen“ von Elementen,
dazu rufen wir unser Array auf und setzen in eckige Klammern den Schlüssel, in unserem Fall den Bandnamen...

Wert ausgeben:
echo $cd_sammlung[Soundgarden];                
Ausgabe: USA
oder
echo $cd_sammlung[Beatles];                    
Ausgabe: England

Möchten wir diesem Array ein Schlüssel/Wert Paar ans Ende des Arrays hinzufügen:

Wert hinzufügen:
$cd_sammlung["Abba"]="Schweden";

Nun haben wir also schon die zwei wichtigsten Arrays kennen gelernt, was sie sind, und wie man sie erzeugt, ausliest und Elemente hinzufügt. Nun möchten wir uns kurz einigen der vielen Möglichkeiten widmen die man nun mit ihnen hat. Dabei möchten wir uns auf ein paar gebräuchliche Funktionen beschränken, da die Anzahl der Funktionen enorm ist.

foreach()
Ist eine speziell für den Array gedachte Schleife und duchläuft jede Position des Arrays wobei, Schlüssel und Wert sehr praktisch ansprechbar sind.
Beispiel:
foreach($cd_sammlung as $schluessel => $wert) { echo $schluessel ." aus ".$wert."<br>"; }

Ausgabe:
Nirvana aus USASoundgarden aus USANikelback aus KanadaBeatles aus England

Diese Funktion gibt eine sehr übersichtliche Liste der Schlüssel und deren Werte aus, gleichzeitig können sie bei jedem Durchlauf bequem bearbeitet werden.

in_array()
Prüft, ob ein Wert in einem Array existiert.

Beispiel:
echo in_array("Soundgarden", $cd_sammlung);

Resultat:
1 (wenn der Wert vorhanden ist, ansonsten wird nichts ausgegeben)

krsort()

Sortiert das Array nach Schlüsseln in umgekehrter Reihenfolge. Das ist allerdings nur eine von sehr vielen Sortierfunktionen die es gibt.
Beispiel:
krsort($cd_sammlung);

Resultat:
macht aus:
Array ( [0] => Nirvana [1] => Soundgarden [2] => Nickelback [3] => Beatles )
wird:
Array ([3] => Beatles [2] => Nickelback[1] => Soundgarden [0] => Nirvana )

sizeof()
Gibt die Menge der Elemente an die im Array vorhanden sind
Beispiel:
echo sizeof($cd_sammlung);

Resultat :
4

array_merge()
Fügt die Elemente zweier Arrays zusammen

Beispiel:
$cd_sammlung3 = array_merge($cd_sammlung1, $cd_sammlung2)

Resultat:
$cd_sammlung3 beinhaltet alle Elemente der anderen beiden Arrays.

shuffle()
Mischt die Elemete eines Arrays
Beispiel: shuffle ($cd_sammlung);Resultat : Mischt den Array zufällig durcheinander.

Nun haben wir die 2 einfachsten Arrays für PHP kennengelernt, und können uns einer weiteren Art widmen...


Mehrdimensionalen Array
Mehrdimensionale Arrays sind eigentlich nichts anderes als ineinander verschachtelte Arrays, sozusagen Arrays die wiederum Arrays beinhalten. Wir möchten hier ein kleines Beispiel machen mit 3 Dimensionen, also einen Array mit Arrays der wiederum einen Array beinhaltet. Damit möchten wir unsere CD Sammlung und einige Informationen dazu speichern können.
Als ersten CD-Titel beginnen wir mit dem Meisterwerk von Nirvana „Nevermind“, hier sehen wir Schritt für Schritt wie sich die Struktur erstellt:
Unser mehrdimensionaler Array soll cd_sammlung heissen:

$cd_sammlung = array ();

In diesem wird für jede CD die wir speichern möchten wiederum einen Array erzeugt mit dem Namen der CD, also in unserem Beispiel $nevermind:

$cd_sammlung = array ("nevermind" => array());

$nevermind, beinhaltet 2 Elemente, zum einen den Namen der Band und zum anderen wiederum einen Array wo die Bandmitglieder und deren Instrumente gespeichert werden:

$cd_sammlung = array ( "nevermind" =>
                          array("bandnamen" => "nirvana",
                                   "bandmitglieder" =>array())

                          );

Wenn wir nun den Array $bandmitglieder füllen sieht die Struktur so aus:
$cd_sammlung = array("nevermind"=>array("bandnamen" => "nirvana", "bandmitglieder" =>array("krist" => "bass", "dave" => "schlagzeug", "kurt" => "vocal")));

Nun können wir das Resultat wieder mit print_r($cd_sammlung); betrachten:


Array
(
    [nevermind] => Array
        (
            [bandnamen] => nirvana
            [bandmitglieder] => Array
                (
                    [krist] => bass
                    [dave] => schlagzeug
                    [kurt] => vocal
                )
        )

Nun ist das Array erzeugt und wir können weitere CD Titel hinzufügen, in diesem Beispiel das Album „help“ von den Beatles:

$cd_sammlung["help"]=array("bandnamen" => "beatles", "bandmitglieder" => array("paul" => "bass", "ringo" => "schlagzeug", "john" => "vocal", "george" => "gitarre"));

Nun befinden sich schon zwei Elemente in unserem Array, diesen kann man natürlich wieder mit print_r() als ganzes ausgeben, oder man ruft einfach eine einzelnes Element auf indem man mit den Schlüssel arbeitet zB :

echo "<pre>";
print_r($cd_sammlung["nevermind"]["bandmitglieder"]);
echo "</pre>";

Ausgabe:
Array
(
    [krist] =>bass
    [dave] => schlagzeug
    [kurt] => vocal
)
Einen einzelnen Wert wird man dann so bekommen:
echo $cd_sammlung["nevermind"]["bandmitglieder"]["kurt"];

Ausgabe:
vocal

So lassen sich also wenn nötig recht komplexe Datenstrukturen mit einem Array realisieren. Natürlich gibt es auch für diese Sorte wieder viele Funktionen über die man viel Tutorial schreiben könnte, das würde aber den Rahmen hier sprengen.
Unser Beispiel sollte möglichst einfach und verständlich sein, es soll die grundsätzliche Idee der Mehrdimensionalität von Arrays Näherbringen, und zum selber testen bez. anwenden motivieren.

Array in Datei abspeichern und wiederherstellen

Eine Interessante Möglichkeit möchte ich hier aber noch kurz zeigen. Das speichern eines Arrays, das kann man entweder in eine Datenbank oder in eine Textdatei machen. Dabei gehen die gespeicherten Werte bez. Elemente nicht verloren. Dafür benutzen wir die Funktion:
serialize()

Zusammen unter anderem mit der Funktion fopen() die die Datei öffnet, und fwrite() die in die Datei schreibt, sieht der Code dann so aus:
1 $arr = fopen("array.txt", "r+b");
2 fseek($arr, 0);
3 fwrite($arr, serialize($cd_sammlung));
4 ftruncate($arr, ftell($arr));
5 fflush($arr);
6 flock($arr, LOCK_UN);
7 fclose($arr);
Später (oder vorher) soll das Array dann wieder aus der Datei gelesen werden, das geht mit der Funktion:
unserialize()

Und kann man so machen:

1 $arr = fopen("array.txt", "r+b");
2 flock($arr, LOCK_EX);
3 $cd_sammlung = unserialize(fread($arr, 50000));
Um nun mit unserem Array zu experimentieren hab ich ein kleines Übungsskript (mit diesem Beispiel), zusammen mit der Textdatei (wo das Array gespeichert wird), der CD beigelegt.

Um damit zu üben:
- lädt man beide Dateien „testarray.php“ und die Textdatei „array.txt“ zusammen in ein Verzeichnis auf einem Server wo PHP installiert ist.
-der Textdatei „arrays.txt“ muss noch Schreibrecht gegeben werden.
-dann kann man die Datei „testarray.php“ mit einem PHP-Editor öffnen und bearbeiten.
-Das Resultat kann man dann im Browser betrachten wenn man testarray.php aufruft...

So kann man unser Array-Beispiel mit Daten füllen, die Struktur verändern, oder das Skript einfach weiter ausbauen, um sich mit dem Thema vertraut zu machen.
Die eingegeben Element im Array gehen dabei nicht verloren weil sie bei jedem Aufruf in die Textdatei gespeichert, und wiederhergestellt werden.
So ich hoffe nun das ich mit diesem Artikel dem einen oder anderen einen kleinen Überblick zum Thema Array verschaffen konnte, wie schon erwähnt habe ich mich auf das absolut grundsätzliche begrenzt, denn dieses Thema ist in seiner Vielfalt der Anwendungsmöglichkeiten genau so enorm wie praktisch und effektiv.