Neuigkeiten, Interessantes und Informatives
Diese Funktion array_map ermöglicht zum Beispiel die Bereinigung von POST-Variablen in dem verschiedene Callback-Funktionen auf das Array angewendet werden können. Das aber nur bedingt dynamisch, denn das Array darf nur eindimensional sein. Seit PHP 5.x besteht die Möglichkeit auch mehrdimensionale Arrays mit der Funktion array_walk_recursive zu durchlaufen. Für PHP Versionen kleiner 5.x habe ich folgenden Snippet geschrieben.
< ?php /** * @category helpful utilities * @package utilities * @subpackage mapping * @version $Id: v0.2 2010/11/01 09:43:03 mitopp Exp $ * @author (c) michael topp <post (at) toppsolutions (dot) de> * @copyright (c) 2010 toppsolutions.de * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @param mixed $mixCallback * @param array $arrData * @access public * @return array */ function array_map_recursive( $mixCallback, array $arrData ) { // array of callback functions if ( is_array( $mixCallback ) ) { foreach ( $mixCallback as $strCallback ) { $arrData = array_map_recursive( $strCallback , $arrData ); } return $arrData; } else { // callback function try { $arrArgs = func_get_args(); $intNumArgs = func_num_args(); $mixCallback = array_shift( $arrArgs ); if ( $intNumArgs == 2 ) { foreach ( $arrArgs[0] as $key => $value ) { if ( is_array( $value ) ) $return[$key] = array_map_recursive( $mixCallback, $value ); else $return[$key] = call_user_func( $mixCallback, $value ); } } else { foreach ( $arrArgs as $index => $array ) { foreach ( $array as $key => $value ) { if ( is_array( $value ) ) $returns[$key] = array_map_recursive( $mixCallback, $value ); else $returns[$key] = call_user_func( $mixCallback, $value ); } $return[] = $returns; } } return $return; } catch (Exception $e) { $trace = $e->getTrace(); exit('<b>Warning: </b>' . $e->getMessage() . " in <b>" . $trace[0]['file'] . "</b> on line <b>" . $trace[0]['line'] . "</b>"); } } } ?>