Mailinglisten-Archive |
Hi Michael, Am Mittwoch, 23. August 2006 14:41 schrieb Lutz Zetzsche: > Ich habe aber gerade noch eine Idee gehabt, wie man das ganz anders > lösen könnte. Hoffentlich auch deutlich kürzer und übersichtlicher. > :-) Ich melde mich also noch mit einer zweiten Lösung. ;-) hier kommt Vorschlag 2: function built_query_string($var_str_arr) { foreach ($_GET as $sKey => $mValue) { if (is_array($mValue)) { foreach ($mValue as $sKey2 => $sValue) { $var_str_arr = str_replace('{GET->'.$sKey.'['.$sKey2.']}', $sValue, $var_str_arr); } } else { $var_str_arr = str_replace('{GET->'.$sKey.'}', $mValue, $var_str_arr); } } $exploded = explode(';', $var_str_arr); foreach ($exploded as $iKey => $sValue) { if (strpos($sValue, '{GET->') > 0) { unset($exploded[$iKey]); } } return implode('&', $exploded); } Die Funktion basiert auf drei Annahmen: 1. Es wird GET verwendet. 2. Die die Schreibweise des Schlüssels ist in $_GET[...] und in {GET->...} identisch. 3. Es werden i.d.R. nicht mehr Parameter übergeben, als auch eingesetzt werden müssen. Ich habe (a) Deine ursprüngliche Funktion, (b) die von mir überarbeitete Version Deiner Funktion und (c) die von mir neu entwickelte Funktion einige Male jeweils 1.000.000 mal durchlaufen lassen. Dabei kamen bei mir konstant folgende Laufzeiten heraus: (a) ca. 68-70 Sekunden (b) ca. 32-34 Sekunden (c) ca. 19-20 Sekunden Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive