|
PHP bietet zahlreiche
spezialisierte Funktionen zur Bearbeitung von
→ Arrays. Auf dieser Seite werden Funktionen und Algorithmen im Zusammenhang mit Arrays vorgestellt. |
Einzelne spezialisierte Aspekte wurden weggelassen, dafür andere
für die Praxis wichtige Punkte genauer vorgestellt. Diese Seite kann daher References oder Tutorials nicht ersetzen, sondern nur ergänzen. |
PHP
|
PHP Hypertext Processor, PHP-Arrays |
| Summe | Arithmetische Summe der Werte aller Elemente |
| Count | Häufigkeit des Auftretens von Werten |
| Reduce | Berechnung eines Wertes aus einem Array |
| Map | Berechnung eines Arrays aus mehreren Arrays |
Sum |
|
Funktion array_sum()berechnet die arithmetische Summe der Werte aller Elemente eines Arrays.Mit Funktion range() wird ein Array $a mit allen ganzen Zahlen von 0 bis 5 erzeugt. Funktion array_sum() berechnet daraus die Summe. |
$a = range(0,5);
ergibt
$b = array_sum($a); $b = 0+1+2+3+4+5 = 15;
|
Reduce |
|
Funktion array_reduce()führt einen Algorithmus aus, in welchem alle Elemente eines Arrays an eine externe (Callback)-Funktion übergeben werden, und mit dem ein einziger Ergebnis-Wert berechnet wird.Die Funktion array_reduce() erhält im einfachsten Fall 2 Argumente ($a,$cbf) Die Werte aller Elemente von Array $a werden schrittweise an die Callback-Funktion $cbf übergeben. Die Callback-Funktion erhält 2 Argumente ($z,$v). Das Zwischenergebnis $z ist anfangs leer bzw. arithmetisch 0, der Wert $v stammt aus dem ersten Element $a[0] Die Callback-Funktion berechnet ein Zwischenergebnis $z und gibt es zurück. In jedem weiteren Schritt erhält die Callback-Funktion das letzte Zwischenergebnis und den Wert des nächsten Elements. Das letzte berechnete Zwischenergebnis wird als Ergebnis der Funktion array_reduce() zurückgegeben. |
function myred1($z,$v) {
ergibt
$z = $z + $v;
}return $z; $a = range(1,5); $b = array_reduce($a,"myred1"); $b = 15;
Die einzelnen Schritte der Callback-Funktion:
$z = $z + $a[0] = 0 + 1 = 1;
$z = $z + $a[1] = 1 + 2 = 3; $z = $z + $a[2] = 3 + 3 = 6; $z = $z + $a[3] = 6 + 4 = 10; $z = $z + $a[4] = 10 + 5 = 15; |
| Im ersten Beispiel wird mit Funktion range() ein Array $a mit allen ganzen Zahlen von 1 bis 5 erzeugt. Die Werte (1,2,3,4,5) werden schrittweise an die Callback-Funktion myred1() übergeben, gleichzeitig das zuletzt von dieser Funktion berechnete Zwischenergebnis. |
Daraus wird wie gezeigt der endgültige Wert $b=15
berechnet. Die Arbeit dieser Funktion ist nicht einfach zu durchschauen, daher wird sie so ausführlich an einem so einfachen Beispiel demonstriert. |
|
Das zweite Beispiel ist nur geringfügig anders aufgebaut: Die Callback-Funktion myred2() berechnet das Produkt der Werte aller Array-Elemente. Jede Zahl ergibt mit 0 das Produkt 0, daher ergibt myred2 ohne Initialisierung immer den Wert 0. Manche Funktionen - wie diese - benötigen einen Anfangswert für das Zwischenergebnis $z Dieser wird als optionales 3. Argument an Funktion array_reduce() übergeben. |
function myred2($z,$v) {
ergibt
$z = $z * $v;
}return $z; $a = range(1,5); $b = array_reduce($a,'myred2',1); $b = 1*2*3*4*5 = 720;
|
|