Moin allerseits,
ich habe jetzt eine Funktion programmiert, mit der man mehrere Arrays auf einmal durch eine callback-Funktion laufen lassen kann. Allerdings kann man an die callback-Funktion keine Parameter übergeben.
In einem konkreten Anwendungsfall würde das so aussehen:
$mirona = array();
$mirona['gmbh'] = "mirona GmbH";
$mirona['street'] = "Leichenweg 1a";
$mirona['plz'] = "12345";
$mirona['ort'] = "Berlin";
$client = array();
$client['firma'] = "Mein Würstchenbud KG";
$client['person'] = "Max Mustermann";
$client['street'] = "Lebendengasse 50";
$client['plz'] = "42123";
$client['ort'] = "Andersbrück";
$client['no'] = "F73N39HOMN0";
$rechnung = array();
$rechnung['title'] = "Ihre Weinbestellung";
$rechnung['no'] = "107748";
array_map_m('utf8_decode','mirona','client','rechnung');
Die Funktion sieht so aus:
function array_map_m($callback)
{
$error1 = utf8_decode('Übergeben Sie der Funktion <strong>array_map_m()</strong> eine callback-Funktion und mindestens ein Array (nur den Namen als string) als Parameter.');
$error2 = utf8_decode('Die Funktion <strong>array_map_m()</strong> erwartet ab dem zweiten Parameter strings mit den Namen von globalen Arrays.');
if (func_num_args() < 2)
{
trigger_error($error1,E_USER_ERROR);
}
$args = func_get_args();
foreach ($args as $key => $arrayname)
{
if ($key == 0) continue 1;
eval('global $'.$arrayname.';');
eval('$array = $'.$arrayname.';');
if (!is_array($array)) trigger_error($error2,E_USER_ERROR);
eval ('$'.$arrayname.' = array_map("'.$callback.'",$'.$arrayname.');');
}
}
Kann man diesen Code noch optimieren? Insbesondere fände ich es schön, wenn man die Arrays normal und nicht als String übergeben könnte.
Grüße, JN
--
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de