phpbar.de logo

Mailinglisten-Archive

[php] dynamische Query Strings bauen

[php] dynamische Query Strings bauen

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Aug 23 15:36:56 CEST 2006


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