Jeder der mit PHP arbeitet kommt meist früher als später mit Arrays in Verbindung. Diese Demoseite fasst nochmal den Code unten verlinkter Beiträge zusammen. Teil 1 gibt einen Einblick in Arrays und erklärt die Basics. In Teil 2 geht es um nützliche Funktionen, welche die tägliche Arbeit mit Arrays erleichtern und dadurch effektiver gestalten.
Blog Beitrag Teil 1: Array Basics » Blog Beitrag Teil 2: Nützliche Array Funktionen »
Credits: sevenX.de
//FUNKTION: Prüfen ob Array is Assoziativer
function isAssocArray($array){
return array_keys($array) !== range(0, count($array) - 1);
}
$mein_array = array("DE" => "Deutschland", "EN" => "England"); //Beispielarray
//Prüfung und Ausgabe
echo (isAssocArray($mein_array) ? "isAssoc" : "false"); //gibt isAssoc aus
$mein_array = array("Deutschland", "England"); //Beispielarray
//Prüfung und Ausgabe
echo (isAssocArray($mein_array) ? "isAssoc" : "false"); //gibt false aus
//FUNKTION: Prüfen ob Multidimensionaler Array
function isMultiArray($array) {
return ((count($array) != count($array, 1)) ? true : false);
}
$mein_array = array("Deutschland", "England"); //Beispielarray
//Prüfung und Ausgabe
echo (isMultiArray($mein_array) ? "isMulti" : "false"); // gibt false aus
$mein_array = array("DE" => "Deutschland", "GB" => array("Schottland", "England", "Wales", "Nordirland")); //Beispielarray
//Prüfung und Ausgabe
echo (isMultiArray($mein_array) ? "isMulti" : "false"); // gibt isMulti aus
//FUNKTION: Prüfen ob Value in Array vorhanden ist
function arrayHasValue ($array, $value) {
return (in_array($value, $array) ? true : false);
}
$mein_array = array("Deutschland", "England"); //Beispielarray
//Prüfung und Ausgabe
echo (arrayHasValue($mein_array, "Deutschland") ? "hasValue" : "noValue"); //gibt hasValue aus
//FUNKTION: Prüfen ob Key in Array vorhanden ist
function arrayHasKey ($array, $key) {
return (array_key_exists($key, $array) ? true : false);
}
$mein_array = array("DE" => "Deutschland", "EN" => "England"); //Beispielarray
//Prüfung und Ausgabe
echo (arrayHasKey($mein_array, "EN") ? "isKey" : "noKey"); //gibt isKey aus
// FUNKTION: Einzelnen Wert hinzufügen
function addValue($array, $value, $key = NULL){
if(!is_null($key)) {
$array[$key] = $value;
} else {
$array[] = $value;
}
return $array;
}
$mein_array = array("Deutschland", "England"); //Beispielarray
$mein_array = addValue($mein_array, "Kanada"); //Funktionsaufruf
//Ausgabe
print_r($mein_array);
//ergibt: Array ( [0] => Deutschland [1] => England [2] => Kanada )
$mein_array = array("DE" => "Deutschland", "EN" => "England"); //Beispielarrays
$mein_array = addValue($mein_array, "Kanada", "CA"); //Funktionsaufruf
$mein_array = addValue($mein_array, "Schweiz", "CH"); //Funktionsaufruf
//Ausgabe
print_r($mein_array);
//ergibt: Array ( [DE] => Deutschland [EN] => England [CA] => Kanada [CH] => Schweiz )
//FUNKTION: Mehrere Werte in als Array hinzufügen
function addArray($array, $new_array){
return(array_merge($array, $new_array));
}
$mein_array = array("DE" => "Deutschland", "EN" => "England"); //Beispielarray
$new_array = array("CA" => "Kanada", "CH" => "Schweiz"); //Plus Arrays
//Funktionsaufruf inkl. Ausgabe
print_r(addArray($mein_array, $new_array));
//ergibt: Array ( [DE] => Deutschland [EN] => England [CA] => Kanada [CH] => Schweiz )
//FUNKTION: Elemente via Value aus Array löschen
function deleteByValue($array, $values)
{
if(is_array($values)) {
return(array_diff($array, $values));
} else {
return(array_diff($array, array($values)));
}
}
$array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz"); //Beispielarray
$del_array = array("DE" => "Deutschland","CH" => "Schweiz"); // Minus Array
//Funktionsaufruf mit Ausgabe
print_r(deleteByValue($array, $del_array));
//ergibt: Array ( [EN] => England [CA] => Kanada )
$array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz"); //Beispielarray
$value = "England"; // Minus Value
//Funktionsaufruf mit Ausgabe
print_r(deleteByValue($array, $value));
//ergibt: Array ( [DE] => Deutschland [CA] => Kanada [CH] => Schweiz )
//FUNKTION: Elemente via Key aus Array löschen
function deleteByKey($array, $keys)
{
if(is_array($keys)) {
foreach ($keys as $key) {
unset($array[$key]);
}
return($array);
} else {
unset($array[$keys]);
return($array);
}
}
$mein_array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz"); //Beispielarray
$key_array = array("CH", "CA"); // Minus Key Array
//Funktionsaufruf mit Ausgabe
print_r(deleteByKey($mein_array, $key_array));
//ergibt: Array ( [DE] => Deutschland [EN] => England )
$mein_array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz"); //Beispielarray
$del_key = "CA"; // Minus Key
//Funktionsaufruf mit Ausgabe
print_r(deleteByKey($mein_array, $del_key));
//ergibt: Array ( [DE] => Deutschland [EN] => England [CH] => Schweiz )
// FUNKTION: Value zu bestimmten Key ausgeben
function getValueByKey($array, $key)
{
return array_key_exists($key, $array) ? $array[$key] : null;
}
$mein_array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz");
echo getValueByKey($mein_array, "CA");
// FUNKTION: Key zu bestimmten Value ausgeben
function getKeyByValue($array, $value) {
return array_search($value, $array);
}
$mein_array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz");
echo getKeyByValue($mein_array, "Schweiz");
// FUNKTION: HTML Liste aus Array Values
function listValues($array, $class = NULL) {
return("<ul class='{$class}'><li>".implode("</li><li>",$array)."</li></ul>");
}
$mein_array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz");
echo listValues($mein_array);
// FUNKTION: HTML Liste aus Array Keys
function listKeys($array, $class = NULL) {
return("<ul class='{$class}'><li>".implode("</li><li>",array_keys($array))."</li></ul>");
}
$mein_array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz");
echo listKeys($mein_array, "list-inline");
//FUNKTION: Definition Liste inkl. Keys und Values
function defListArray($array, $class = NULL) {
$list = "<dl class='{$class}'>";
foreach ($array as $key => $value) {
$list .= "<dt>{$key}</dt>";
$list .= "<dd>{$value}</dd>";
}
$list .= "</dl>";
return($list);
}
$mein_array = array("DE" => "Deutschland","EN" => "England","CA" => "Kanada","CH" => "Schweiz");
echo defListArray($mein_array);
// Verschachtelte HTML Liste für zweidimensionale assoc Arrays
function nestedList ($array, $class = NULL) {
$list = "<ul class='{$class}'>";
foreach ($array as $key => $value) {
$list .= "<li>{$key}";
$list .= "<ul>";
foreach($value as $data_key => $data_value) {
$list .= "<li>{$data_key} - {$data_value}</li>";
}
$list .= "</ul></li>";
}
$list .= "</ul>";
return($list);
}
$mein_array = array(
"England" => array(
"Code" => "EN",
"Capital" => "London",
"Currency" => "Pfund",
"Continent" => "Europoa",
"Language" => "Englisch"
),
"Deutschland" => array(
"Code" => "DE",
"Capital" => "Berlin",
"Currency" => "Euro",
"Continent" => "Europoa",
"Language" => "Deutsch"
),
"Kanada" => array(
"Code" => "CA",
"Capital" => "Ottawa",
"Currency" => "Kanad. Dollar",
"Continent" => "Nordamerika",
"Language" => "englisch"
)
);
echo nestedList($mein_array);
//einfach
$laender = array("England", "Deutschland", "Kanada", "Schweiz");
//assoziativ
$laenderkennung = array(
"EN" => "England",
"DE" => "Deutschland",
"CA" => "Kanada",
"CH" => "Schweiz"
);
$DE = array(
"Country" => "Deutschland",
"Capital" => "Berlin",
"Currency" => "Euro",
"Continent" => "Europoa",
"Language" => "deutsch",
"Domain" => ".de"
);
$laenderinfo = array(
"EN" => array(
"Country" => "England",
"Capital" => "London",
"Currency" => "Pfund",
"Continent" => "Europoa",
"Language" => "englisch",
"Domain" => ".uk"
),
"DE" => array(
"Country" => "Deutschland",
"Capital" => "Berlin",
"Currency" => "Euro",
"Continent" => "Europoa",
"Language" => "deutsch",
"Domain" => ".de"
),
"CA" => array(
"Country" => "Kanady",
"Capital" => "Ottawa",
"Currency" => "Kanad. Dollar",
"Continent" => "Nordamerika",
"Language" => array ( "englisch", "französisch"),
"Domain" => ".ca"
),
"CH" => array(
"Country" => "Schweiz",
"Capital" => "Bern",
"Currency" => "Schweizer Franken",
"Continent" => "Europa",
"Language" => array ( "deutsch", "französisch", "italienisch"),
"Domain" => ".ch"
)
);
Deutschland
Kanada
Berlin
Ottawa
Pfund
italienisch
Europoa
.ca
Deutschland
// Arrays siehe oben + folgende Testvariablen
$code = "EN";
$code2 = "de";
$code3 = array("EN","DE","CA","CH");
$info = "Continent";
//Ausgabebefehle
echo $laender[1] ;
echo $laenderkennung ["CA"];
echo $DE["Capital"];
echo $laenderinfo["CA"]["Capital"];
echo $laenderinfo["EN"]["Currency"];
echo $laenderinfo["CH"]["Language"][0];
echo $laenderinfo[$code][$info];
echo $laenderinfo[$code3[2]]["Domain"];
echo $laenderkennung[$code2]; //erzeugt Fehler weil: de != DE
echo $laenderkennung[strtoupper($code2)]; //PHP Funktion erzeugt Großbuchstaben
$laender = array("England", "Deutschland", "Kanada", "Schweiz");
//While Schleife mit Zeilenumbruch
while ($land = current($laender)) {
echo $land . "<br>";
next($laender);
}
// Foreach Schleife, kommagetrennt
foreach ($laender as $land2) {
echo $land2 . ", ";
}
England
$laender = array("England", "Deutschland", "Kanada", "Schweiz");
rsort($laender); // entspricht DESC, sort() -> ASC
// While Schleife mit Zeilenumbruch
while ($land = current($laender)) {
echo $land . "<br>";
next($laender);
}
// Foreach Schleife kommagetrennt
foreach ($laender as $land2) {
echo $land2 . ", ";
}
Schweiz
$laender = array(
"EN" => "England",
"DE" => "Deutschland",
"CA" => "Kanada",
"CH" => "Schweiz"
);
//While Variante
while ($land = current($laender)) {
echo key($laender) . " - " .$land . "<br>";
next($laender);
}
//Foreach Variante
foreach ($laender as $key => $value) {
echo $key . " - " . $value . ", ";
}
EN - England
$DE = array(
"Country" => "Deutschland",
"Capital" => "Berlin",
"Currency" => "Euro",
"Continent" => "Europoa",
"Language" => "deutsch",
"Domain" => ".de"
);
//While Variante
while ($info = current($DE)) {
echo key($DE) . " - " .$info . "<br>";
next($info);
}
//Foreach Variante
foreach ($laender as $key => $value) {
echo $key . " - " . $value . ", ";
}
Country - Deutschland
//Basis: Mehrdimensionaler Array siehe oben
// je nach Vorliebe auch mit Foreach Schleife umsetzbar
while ($land = current($laenderinfo)) {
echo "<h4>" . key($laenderinfo) . "</h4>";
if(is_array($land)) {
while ($info = current($land)) {
if(is_array($info)) {
echo key($land) . " - ";
while ($detail = current($info)) {
echo $detail . ", ";
next($info);
}
echo "<br>";
} else {
echo key($land) . " - " .$info . "<br>";
}
next($land);
}
} else{
echo key($laenderinfo);
}
next($laenderinfo);
}
$laender = array("England", "Deutschland", "Kanada", "Schweiz");
// Ausgabe mit Schleife erzeugen
echo "<ul>";
foreach ($laender as $land) {
echo "<li>" . $land . "</li>";
}
echo "</ul>";
// Ausgabe mit implode erzeugen (empfohlen)
echo '<ul><li>'.implode('</li><li>',$laender).'</li></ul>';
<!-- Durch Kombination von Schleife und/oder implode,
ist man in der Lage auch komplexere HTML zu realisieren -->
<table width="100%" class="table">
<thead>
<tr>
<th><?php echo implode('</th><th>', array_keys($laenderinfo2));?></th>
</tr>
</thead>
<tbody>
<tr>
<?php
while ($land = current($laenderinfo2)) {
echo "<td>";
if(is_array($land)) {
while ($info = current($land)) {
echo key($land) . ": " . $info . "<br>";
next($land);
}
}
echo "</td>";
next($laenderinfo2);
}
?>
</tr>
</tbody>
</table>
$laenderinfo2 = array(
"England" => array(
"Code" => "EN",
"Capital" => "London",
"Currency" => "Pfund",
"Continent" => "Europoa",
"Language" => "Englisch"
),
"Deutschland" => array(
"Code" => "DE",
"Capital" => "Berlin",
"Currency" => "Euro",
"Continent" => "Europoa",
"Language" => "Deutsch"
),
"Kanada" => array(
"Code" => "CA",
"Capital" => "Ottawa",
"Currency" => "Kanad. Dollar",
"Continent" => "Nordamerika",
"Language" => "englisch"
),
"Schweiz" => array(
"Code" => "CH",
"Capital" => "Bern",
"Currency" => "Schweizer Franken",
"Continent" => "Europoa",
"Language" => "deutsch"
)
);
England | Deutschland | Kanada | Schweiz |
---|---|---|---|
Code: EN Capital: London Currency: Pfund Continent: Europoa Language: Englisch | Code: DE Capital: Berlin Currency: Euro Continent: Europoa Language: Deutsch | Code: CA Capital: Ottawa Currency: Kanad. Dollar Continent: Nordamerika Language: englisch | Code: CH Capital: Bern Currency: Schweizer Franken Continent: Europoa Language: deutsch |