PHP 4.3

5.8.3 Existenzprüfung von Arrayinhalten

Wie wir am Anfang des Kapitels erläuterten, bieten sich Arrays insbesondere zur Zwischenspeicherung großer Variablenmengen an. Da mit der Menge gleichermaßen der Überblick ein wenig verloren gehen kann, bietet PHP mit in_array() eine Funktion an, mit der Sie nach Werten innerhalb eines Arrays suchen können. Dabei liefert in_array() die booleschen Werte true oder false zurück, je nachdem, ob der Wert auffindbar ist oder nicht.

Die Funktionsweise von in_array() sei im nachfolgenden Skript kurz erläutert:

<?php

  $array[1] = "Athen";
  $array[2] = "Berlin";
  $array[3] = "London";
  $array[4] = "New York";
  $array[5] = "Los Angeles";
  $array[6] = "Paris";
  $array[7] = "Sydney";
  $array[8] = "San Francisco";

  if (in_array("Athen", $array)) {
    echo "Die Stadt Athen ist vorhanden.";
  } else {
    echo "Athen konnte nicht gefunden werden";
  }

?>

Für mehrdimensionale Arrays gestaltet sich die Suche auf dem folgenden Weg:

<?php

  $array["city"][1] = "Athen";
  $array["country"][1] = "Griechenland";
  $array["city"][2] = "Berlin";
  $array["country"][2] = "Deutschland";
  $array["city"][3] = "London";
  $array["country"][3] = "Großbritannien";
  $array["city"][4] = "New York";
  $array["country"][4] = "USA";
  $array["city"][5] = "Los Angeles";
  $array["country"][5] = "USA";
  $array["city"][6] = "Paris";
  $array["country"][6] = "Frankreich";
  $array["city"][7] = "Sydney";
  $array["country"][7] = "Australien";
  $array["city"][8] = "San Francisco";
  $array["country"][8] = "USA";

  if(in_array("Athen", $array["city"])) {
    echo "Die Stadt Athen ist vorhanden.";
  } else {
    echo "Athen konnte nicht gefunden werden";
  }

?>

Gezielte Suche des Elements

Neben der allgemeinen Suche mit in_array(), gibt es ab PHP 4.0.5 auch die Funktion array_search(). Sie liefert den Index des gesuchten Wertes zurück, sofern er im Array gefunden werden kann. Dabei kann es sich bei dem Index, je nach Array, um den numerischen Wert oder den assoziativen Namen handeln.
Wenn der Wert nicht gefunden werden kann, liefert die Funktion false zurück.

mixed = array_search(needle, haystack, bool strict)

Die Funktion erwartet als Argumente den gesuchten Wert needle und dass zu durchsuchende Array haystack (bzw. bei mehrdimensionalen Arrays den Verweis auf die entsprechende Dimension). Sofern Sie strict auf true setzen, wird zusätzlich auch der Typ des gesuchten Wertes im Array geprüft.
Ein Beispiel:
<?php

  $array["city"][1] = "Athen";
  $array["country"][1] = "Griechenland";
  $array["city"][2] = "Berlin";
  $array["country"][2] = "Deutschland";
  $array["city"][3] = "London";
  $array["country"][3] = "Großbritannien";
  $array["city"][4] = "New York";
  $array["country"][4] = "USA";
  $array["city"][5] = "Los Angeles";
  $array["country"][5] = "USA";
  $array["city"][6] = "Paris";
  $array["country"][6] = "Frankreich";
  $array["city"][7] = "Sydney";
  $array["country"][7] = "Australien";
  $array["city"][8] = "San Francisco";
  $array["country"][8] = "USA";

  if(in_array("Athen", $array["city"])) {
    echo "Die Stadt Athen ist vorhanden.";
    $element = array_search("Athen", $array["city"]);
    echo "<br>Sie liegt in " . $array["country"][$element].".";
  } else {
    echo "Athen konnte nicht gefunden werden";
  }

?> 

Kommentare (0)

Ihr Kommentar

Name