Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

Die Vernachlässigten: array_walk, array_filter, array_reduce und array_map

Bisher war die Syntax der oben aufgeführten Funktionen ziemlich unsexy, da sie mit Callbacks arbeiten und dieser dann als String übergeben werden musste. Durch anonyme Funktionen in PHP 5.3 mutet das alles wesentlich „smoother“ an, sodass ich mir mal die genannten Funktionen genauer angesehen habe und nachfolgend kurz vorstelle.

array_walk – Der foreach-Ersatz

<?php $arr = array("audi a6" => 39500, 			 "bmw m5" => 41200, 			 "mercedes e300" => 43400);   array_walk($arr,function($val,$key) { 	echo $key." = ".$val."<br />"; });  /* Output: audi a6 = 39500 bmw m5 = 41200 mercedes e300 = 43400 */ 

Also äquivalent zu foreach, das Array selbst bleibt unverändert. Wenn man jetzt das Array per Referenz übergibt, kann man das aktuell iterierte Element sogar noch manipulieren.

<?php $arr = array("audi a6" => 39500, 			 "bmw m5" => 41200, 			 "mercedes e300" => 43400);   array_walk($arr,function(&$val,$key) { 	$val = $val * 1.05; }); 																													 print_r($arr); /* Array (     [audi a6] => 41475     [bmw m5] => 43260     [mercedes e300] => 45570 ) */ 

Auch das wäre aber noch mit foreach möglich:

foreach ($arr as $e => &$v) 	$v*=1.05; 

array_filter: Bestimmte Elemente aus Array rauswerfen

Durch einen boolschen return in der Callback-Funktion lassen sich bestimmte Elemente aus dem Array herausfiltern:

<?php $arr = array("audi a6" => 39500, 			 "bmw m5" => 41200, 			 "mercedes e300" => 43400);  //only cars cheaper than 40000 $res = array_filter($arr,function($val) {	 	return $val < 40000; });  print_r($res); /* Array (     [audi a6] => 39500 ) */ 

array_reduce: Elemente aus dem Array auf eins reduzieren

<?php $a = array(1, 9, 3, 7, 100); $b = array_reduce($a, function($v, $w) { 	echo "$v + $w = ".($v + $w)."<br />";     return $v+$w; });  print "result: ".$b; /* Output: + 1 = 1 1 + 9 = 10 10 + 3 = 13 13 + 7 = 20 20 + 100 = 120 result: 120 */ 

array_map – Die Werte von einem/mehreren Arrays manipulieren

Erstmal mit einem Array:

<?php $a1 = array(1,3,3,7);  $b = array_map(function($e) {     return $e*$e*$e; }, $a1);  print_r($b); /*  Array (     [0] => 1     [1] => 27     [2] => 27     [3] => 343 ) */ 

Geht auch mit mehreren Arrays:

<?php $a1 = array(1, 2, 3, 4, 5); $a2 = array(2, 3, 4, 5, 6);  $b = array_map(function($n1,$n2) {     return $n1 * $n2; }, $a1, $a2);  print_r($b); /* Array (     [0] => 2     [1] => 6     [2] => 12     [3] => 20     [4] => 30 ) */ 

Vielleicht ergibt sich ja mal eine Situation wo man diese zweifellos nützlichen Funktionen gewinnbringend anwenden kann.