dedlfix: Maximalwert von mehrdimensionalen assoziativen Array

Beitrag lesen

Hi!

function max_alter ($a, $b) {

return $a['alter'] > $b['alter'] ? $a : $b;
}

$testfeld = array_reduce($testfeld, "max_alter", 0);
echo $testfeld['bild'];

  
Du hast den Code vermutlich nur zum Testen verwendet. Ansonsten würde man doch eher das Resultat des Reduzierens in einer neuen Variable speichern und sich nicht das Original-Array überschreiben.  
  
  
Aber mal was anders: Jetzt bin ich doch etwas verwundert, denn der Code löst bei vollem error\_reporting keine Fehlermeldung aus. Eine Notice hätte ich ja wenigstens erwartet. Beim ersten Aufruf bekommt max\_alter() die 0 vom dritten Parameter von array\_reduce()-Aufruf übergeben. Es findet also quasi ein Lesezugriff auf 0['alter'] statt. Doch PHP lässt das einfach so durchgehen, wobei das Ergebnis vom Ausdruck null ist. Das gleiche passiert (oder passiert nicht, wenn man eine Meldung erwartet), wenn man die 0 weglässt oder null übergibt. Auch null['irgendwas'] bringt keinen Fehler. Also, wenn man es direkt notiert schon, dann ist es ein Syntaxfehler, aber 0 oder null als Variableninhalt und dann einen Array-Zugriff darauf ergibt nur ein stillschweigendes null.  
  
  
Lo!