PHP Tutorial: Effektives Arbeiten mit Arrays - Validierung - Erweiterung - Ausgabe

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 )                  
                    
                

einfache (Listen)Ausgaben


Value zu bestimmten Key ausgeben
Kanada

Key zu bestimmten Value ausgeben
CH

HTML Liste aus Array Values
  • Deutschland
  • England
  • Kanada
  • Schweiz


HTML Liste aus Array Keys
+ optionale CSS Klasse 'list-inline'

  • DE
  • EN
  • CA
  • CH


Definition Liste inkl. Keys und Values
DE
Deutschland
EN
England
CA
Kanada
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 assoz. Arrays


  • England
    • Code - EN
    • Capital - London
    • Currency - Pfund
    • Continent - Europoa
    • Language - Englisch
  • Deutschland
    • Code - DE
    • Capital - Berlin
    • Currency - Euro
    • Continent - Europoa
    • Language - Deutsch
  • Kanada
    • Code - CA
    • Capital - Ottawa
    • Currency - Kanad. Dollar
    • Continent - Nordamerika
    • Language - englisch
                	
// 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);                    
                    
                

Eindimensionaler 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"
);
                
            

Mehrdimensionaler Array

                
$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"
        )				                
);
                
            

Ausgaben

Deutschland

Kanada

Berlin

Ottawa

Pfund

italienisch

Europoa

.ca

Deutschland

Code

                
// 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

                
            

Werte ausgeben

                
$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
Deutschland
Kanada
Schweiz

England, Deutschland, Kanada, Schweiz,

Werte sortiert ausgeben

                
$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
Kanada
England
Deutschland

Schweiz, Kanada, England, Deutschland,

Werte und Keys ausgeben

                
$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 - Deutschland
CA - Kanada
CH - Schweiz

EN - England, DE - Deutschland, CA - Kanada, CH - Schweiz,

 

                
$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
Capital - Berlin
Currency - Euro
Continent - Europoa
Language - deutsch
Domain - .de

Country - Deutschland, Capital - Berlin, Currency - Euro, Continent - Europoa, Language - deutsch, Domain - .de,

EN

Country - England
Capital - London
Currency - Pfund
Continent - Europoa
Language - englisch
Domain - .uk

DE

Country - Deutschland
Capital - Berlin
Currency - Euro
Continent - Europoa
Language - deutsch
Domain - .de

CA

Country - Kanady
Capital - Ottawa
Currency - Kanad. Dollar
Continent - Nordamerika
Language - englisch, französisch,
Domain - .ca

CH

Country - Schweiz
Capital - Bern
Currency - Schweizer Franken
Continent - Europa
Language - deutsch, französisch, italienisch,
Domain - .ch
                
//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);
}
                
            

Liste einfacher Array Werte

Foreach Schleife
  • England
  • Deutschland
  • Kanada
  • Schweiz

mit implode()
  • England
  • Deutschland
  • Kanada
  • Schweiz

Code

                
$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>';
                
            

Mehrdimensionale Arrays als Tabelle formatieren

Tabelle
                
<!-- 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>
                
            

 

Quellarray
                
$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"
    )
);
                
            

HTML Ausgabe
EnglandDeutschlandKanadaSchweiz
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