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