[PHP] Wieso funktioniert folgende Umwandlung nicht?



  • $persons = $_POST['children'] + $_POST['adults'];
     $transform_vars = array(
                             "PERSONS" => "$persons",
                             "CHILDREN" => $_POST['children'],
                             "ADULTS" => $_POST['adults'],
                             "PRICE_PRO_PERSON" => "$price_person",
                             "PRICE_PRO_CHILD" => "$price_child",
                             "PRICE_PRO_PERSON" => "$price_person"
                            );
    
     foreach($transform_vars as $key => $value)
     {
       $str = str_replace($key, $value, $string);
     }
    

    Wieso funktioniert obiges nicht? Also im $string soll jedes vorkommende $key durch $value ersetzt werden. Funktioniert aber nicht... und ich habe keine Ahnung warum..... Vielleicht kann es ja mal jemand von euch testen!?
    MfG

    Tobsen



  • Müsste es nicht string=strreplace(str**ing** = str_replace(key, $value, $string); heißen? Sonst bringt doch das Ersetzen gar nichts 😕 😉



  • 🙄 🙄 jo danke...... 🙄 🙄 🙄 🙄 😉


  • Mod

    warum erstellst du zuerst ein array und machst dann erst das str_replace über das array??? das ist ja lahm...



  • @shade wie würdest du es denn machen? Und wieso ist das lahm?
    MfG

    Tobsen


  • Mod

    Original erstellt von Tobsen:
    **@shade wie würdest du es denn machen? Und wieso ist das lahm?
    **

    du koenntest zB strstr nehmen:

    str=strstr(str=strstr(str,$transform_vars);

    allerdings bin ich doch gerade unsicher geworden ob strstr wirklich schneller ist als viele str_replace aufrufe... naja, ich glaub schon, sicher bin ich aber nicht 😞

    der nachteil deiner methode ist:
    du rufst str_replace sehr oft aufrufst -> viele kopien.



  • du kannst auch str_replace() zwei arrays für die ersten zwei Parameter übergeben. Wie sich das Ganze aber geschwindigkeitsmäßig verhällt weiß ich nicht (müsste man vielleicht testen)


Anmelden zum Antworten