Suche nach als

Array Assoziativ

Auf dieser Seite:

Ein Array ist eine Sammlung von Variablen, in assoziativen Arrays haben die Variablen ansprechende Namen (Strings statt Zahlen).

Auf der Seite Numerische Arrays sind weitere Array Funktionen beschrieben.

Array konstruieren

Mit dem Konstruktor einen Array konstruieren

$Tier = array ("Ka" => "Katze", ...

Einer Variablen wird ein Array zugeordnet, in einer Klammer wird dem assoziativen Index mit einer Art Pfeil bestehend aus = und > ein Wert zugeordnet, mehrere Einträge werden durch Komma getrennt. Der Assoziative Index ist ein String, wird also angeführt.
Auch beim Aufruf eines Eintrages wird der Index als String behandelt, ohne Anführungszeichen würde PHP eine undefinierte Konstante melden.

<?php
  $Tier = array ("Ka" => "Katze", "Es" => "Esel", 
    "Hu" => "Hund", "Pf" => "Pferd", "Ha" => "Hahn",);

  echo "Das ".$Tier ["Pf"]." ist kein Bremer Stadtmusikant.<br>";
?>
Das Pferd ist kein Bremer Stadtmusikant.

Mit dem Identifizierer einen Array indizieren

[key]="value"

Wir schreiben den Array '$Tiere':
<?php
  $Tiere ['e'] = "Hahn";
  $Tiere ['b'] = "Katze";
  $Tiere ['c'] = "Zebra";
  $Tiere ['a'] = "Hund";
  $Tiere ['d'] = "Pferd";
  $Tiere ['f'] = "Esel";
  echo $Tiere ['b']."<br />"; // zur Auswahl muss man den Index kennen

  $Tiere ['z'] = "Kuh"; // hinzufügen geht ganz einfach
  echo $Tiere ['z']."<br />";

  $Tiere ['e'] = "Wolf"; // ändern geht ganz einfach
  echo $Tiere ['e'];
?>

Zu Beachten habe ich, dass der Identifizierer ein String ist und folglich 'angeführt' wird.
Würde ich $Tiere [e]; (ohne Anführungszeichen) aufrufen, dann generierte PHP eine Fehlernotiz, weil es keine Konstante e findet.

Katze
Kuh
Wolf

Array Analysieren

Alle Funktionen ausser isset() setzen voraus, dass die Variable existiert.
Falls eine Variable aufgerufen wird, die gar nicht gesetzt ist, gibt es eine Fehlermeldung.

Ist diese Variable überhaupt gesetzt?

isset();

isset() fragt: Gibt es diese Variable, diesen Array überhaupt? und gibt 1 für TRUE oder nichts für FALSE zurück.
echo isset($Tiere);
1 // 1 für TRUE wenn es $Tiere gibt

echo !isset($Tiere);
// Behauptung ist FALSE, dass es $Tiere nicht gäbe

Zwei Funktionen um komplexe Arrays komplett darzustellen sind: print_r() oder var_dump() auf einer eigenen Seite.

Total der Einträge im Array feststellen

count($ArrayName)

Es hat <?php echo count($Tiere); ?> Tiere im Array.

Es hat 7 Tiere im Array.

Den allerletzten Eintrag herausfinden

end($Tiere);

<?php echo end($Tiere); ?>
Letzte Kuh macht Türe zu.

Eintrag auf vorhanden sein eines Wertes überprüfen

in_array("Katze",$Tiere);

Ist ein bestimmter Eintrag in diesem Array enthalten? (gibt nichts wenn FALSE oder 1 wenn TRUE zurück):
echo in_array("Katze",$Tiere);
1 // 1 falls TRUE

Welchen Index im Array hat die Katze?

array_search("Katze", $Tiere);

Wo ist die Katze?: array_search() gibt den Index zurück
<?php
$finde = array_search ("Katze", $Tiere);
if ($finde) { echo $finde." ist der Key von "
. $Tiere[$finde]; } // wie echo $Tiere[b];
?>

b ist der Key von Katze

gibt es einen Index x im Array Tiere?

array_key_exists("x", $Tiere);

echo array_key_exists("x", $Tiere);
// nichts wenn kein Schlüssel x existiert

Welche Indizes gibt es im Array?

array_keys ($Tiere);

Der Rückgabewert ist ein numerischer Array mit allen Schlüsseln des fraglichen Arrays.

print_r(array_keys($Tiere));
Array ( [0] => e [1] => b [2] => c [3] => a [4] => d [5] => f [6] => z )

Welche Werte gibt es im Array?

array_values ($Tiere);

Der Rückgabewert ist ein numerischer Array mit allen Werten des fraglichen Arrays.

print_r(array_values($Tiere));
Array ( [0] => Wolf [1] => Katze [2] => Zebra [3] => Hund [4] => Pferd [5] => Esel [6] => Kuh )

foreach Schleife

foreach($Tiere as $temp)

Zum Abarbeiten von Arrays gibt es extra eine Schleife, diese wird für jeden Array-Eintrag erneut durchlaufen. Dabei werden temporäre Variablen erstellt bzw. benannt und bei jedem Durchgang überschrieben.

<?php
foreach($Tiere as $temp)
{
echo "$temp<br />";
}
?>
Nur die Werte: Wolf
Katze
Zebra
Hund
Pferd
Esel
Kuh

foreach($Tiere as $key => $value)

Schlüssel und Werte:

<?php
foreach($Tiere as $key => $value) // => ist funktionierender Zuordner
{ echo $key," => ", $value, "<br>"; // => ist nur ein "String" in der Ausgabe } ?>
e => Wolf
b => Katze
c => Zebra
a => Hund
d => Pferd
f => Esel
z => Kuh

Die Ausgabe erfolgt in der Reihenfolge des Array-Eintrages und nicht irgendwie alphabetisch!

Array sortieren

Array nach Werten aufsteigend sortieren

asort($Arrayname);

... und erneut ausgeben, die Reihenfolge hat geändert!

Esel : f
Hund : a
Katze : b
Kuh : z
Pferd : d
Wolf : e
Zebra : c

Absteigend hiesse der Befehl arsort($Arrayname); -mit 'r' wie rückwärts

Array nach Index (key) aufsteigend sortieren

ksort($Arrayname);

... und erneut ausgeben, die Reihenfolge hat wieder geändert!

a = Hund
b = Katze
c = Zebra
d = Pferd
e = Wolf
f = Esel
z = Kuh

Absteigend hiesse der Befehl krsort($Arrayname); -mit 'r'

2 Arrays miteinander vermengen

Ich habe zwei Arrays,der erste Array heist $Tier (siehe oben):

Array ( [Ka] => Katze [Es] => Esel [Hu] => Hund [Pf] => Pferd [Ha] => Hahn )

Und ich habe noch diesem neuen, zweiten Array $Viecher:

Array ( [Ka] => Karnickel [Es] => Esel [Ti] => Tiger [Pf] => Pfau [Ha] => Hase )

Mit Plus-Zeichen

Werden durch das Pluszeichen zwei Arrays zusammengesetzt, dann wird der vom zweiten Array übergebene Eintrag gelöscht, wenn der Index (nicht der Wert) im ersten Array schon vorhanden ist.
Der erste Index überlebt!

$zusammengesetzt = $Tier + $Viecher;
asort($zusammengesetzt);

print_r($zusammengesetzt);
Array ( [Es] => Esel [Ha] => Hahn [Hu] => Hund [Ka] => Katze [Pf] => Pferd [Ti] => Tiger )

array_merge()

Werden durch array_merge zwei assoziative Arrays in einen verwandelt, dann überschreibt der als zweiter Array übergebene den ersten dort, wo der Index (nicht der Wert) der Selbe ist.
Der zweite Index killt!

Würden hingegen durch array_merge zwei nummerische Arrays in einen verwandelt, dann würd der zweite Array an den ersten angehängt (hier ohne Beispiel).

$schmelz = array_merge($Tier,$Viecher);
asort($schmelz);

print_r($schmelz);
Array ( [Es] => Esel [Ha] => Hase [Hu] => Hund [Ka] => Karnickel [Pf] => Pfau [Ti] => Tiger )

Wenn ich die beiden Arrays $Tiere und $Tier miteinander durch array_merge() vermenge, erhalte ich im Array $Tiermenge viele doppelte Einträge, da kein Index doppelt war:

Array ( [f] => Esel [Es] => Esel [Ha] => Hahn [a] => Hund [Hu] => Hund [b] => Katze [Ka] => Katze [z] => Kuh [Pf] => Pferd [d] => Pferd [e] => Wolf [c] => Zebra )

Doppelte Werte löschen

array_unique ()

In einem Array werden alle doppelten Werte gelöscht. Der erste der doppelten Werte behält dabei seinen Index, der zweite wird gelöscht.

<?php
$result = array_unique ($Tiermenge);
print_r($result);
?>
Array ( [f] => Esel [Ha] => Hahn [a] => Hund [b] => Katze [z] => Kuh [Pf] => Pferd [e] => Wolf [c] => Zebra )

 


Valid XHTML 1.0 Check den Code.

Array ausgeben >> << Array Numerisch
Ich bin hier: > PHP Lehrling >>> Array Assoziativ
 
HTML und XHTML | CSS | JavaScript und DHTML | PHP und MySQL | Andere Sprachen
Letzter Update: 19.05.2012