Martin: Variable im String erst später definieren

hallo,

mal angenommen, ich habe folgendes (Mini-)Script:

$string = "Ich heiße $name";
$name = "Martin"

ein echo $string; gibt mir jetzt "Ich heiße" aus.
Klar - $name wurde ja erst später deklariert.

Meine Frage:
Wie schaffe ich es, daß $name noch mit in $string "eingearbeitet" wird?
D.h. meine Ausgabe soll "Ich heiße Matin" lauten...?
Dabei soll $name NACH $string definiert werden, nicht vorher (sonst würde es ja klappen ... ;-))

Grüße,
Martin

  1. hi,

    $string = "Ich heiße $name";
    $name = "Martin"

    ein echo $string; gibt mir jetzt "Ich heiße" aus.
    Klar - $name wurde ja erst später deklariert.

    als weitere ausgabe solltest du m.E. eine notice erhalten, dass $name eine undefinierte variable ist.

    Meine Frage:
    Wie schaffe ich es, daß $name noch mit in $string "eingearbeitet" wird?
    D.h. meine Ausgabe soll "Ich heiße Matin" lauten...?
    Dabei soll $name NACH $string definiert werden, nicht vorher (sonst würde es ja klappen ... ;-))

    du willst eine zeitmaschine erfinden, und als php-extension bereitstellen?
    viel glück.
    die manual-seite http://www.php.net/manual/de/ref.timemachine.php wird hiermit schon mal für deine doku dazu reserviert.

    gruß,
    wahsaga

    p.s.: soll das ganze auch irgendeinen sinn haben? ich erkenne keinen.

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      p.s.: soll das ganze auch irgendeinen sinn haben? ich erkenne keinen.

      ja, eigentlich schon.
      ich will meine queries alle auf eine seite an den anfang packen,
      einfach um sie nicht später irgendwo im php-code stehen zu haben.

      allerdings werden die inhalte für die queries teilweise eben erst später definiert.

      sinn ist eigentlich nur übersichtlichkeit und der versuch, struktur in den quellcode reinzubringen.

      grüße,
      martin

  2. Hallo Martin!

    Normalerweise verwendet man solche Ausgaben ja öfter - warum also nicht eine kleine Funktion bauen:

    function print_my_name($name)
    {
      print("Ich heisse $name <br />\n");
    }

    Das kannst Du "nachher" und beliebig oft aufrufen:

    print_my_name('Martin');

    lg

    norbert =:-)

    1. hi norbert,

      von der idee her finde ich es gut,
      aber das wird spätestens dann eng, wenn du mehrere strings mit sehr vielen verschiedenen variablen hast, oder seh ich da was falsch?

      grüße,
      martin

      1. Hallo Martin!

        Ich habe erst nach meinem Eintrag Dein Folgeposting gelesen.

        Um hier näher drauf eingehen zu können, müsste mehr über die gewünschte Funktionalität bekannt sein. Warum willst Du denn so viele Queries mit so vielen Variablen definieren? Vielleicht gibts bessere Wege, wenns wirklich so dynamisch sein muss.

        lg

        norbert =:-)

        1. Hallo Norbert,

          danke für deine Antwort.
          Also konkret sieht das bei mir so aus:

          /* ...fuer Kategorien: */
          $cat_new = "INSERT INTO blg_cat (label) VALUES ('$label')"; // Speichert Kategorie
          $check_cat_label = "SELECT COUNT(*) FROM blg_cat WHERE label='$label'"; // Checkt, ob Kategorie bereits vorhanden ist
              $show_cat = "SELECT * FROM blg_cat ORDER BY label"; // Alle Kategorien anzeigen
              $show_cat_update = "SELECT label FROM blg_cat WHERE id=$id"; // einzelne Kategorie zum Aendern anzeigen
          $cat_update = "UPDATE blg_cat SET label='$label' WHERE id=$id"; // Kategorie umbennen
          $cat_delete = "DELETE FROM blg_cat WHERE id=$id"; // Kategorie umbennen
          /* ...fuer Eintraege */
          $entry_new = "INSERT INTO blg_entry (cat_id,headline,teaser,entry,created,clearance)
               VALUES ($cat_id,'$headline','$teaser','$entry','$created',$clearance)"; // Legt neuen Eintrag an
          $entry_cat = "SELECT * FROM blg_cat ORDER BY label"; // Holt Kategorien fuer Kat-Pulldown bei neuen Eintraegen
          $entry_show = "SELECT * FROM blg_entry ORDER BY created"; // Zeigt alle Eintraege an

          WAS genau in den Queries steht, ist ja egal - aber du siehst schon, da kommt ein bißchen was zusammen, und es ist mehr als man mit einer funktion machen kann ;-)

          Diese ganzen Queries stehen jetzt am anfang einer datei,
          in die ich per include einzelne teile reinlade - entweder eben zum anlegen, ändern oder löschen von datensätzen.

          klar könnte ich die queries auch in die einzelnen includes schreiben,
          aber ich finde es irgendwie übersichtlicher, wenn ich sie alle zusammen "am stück" habe...

          grüße,
          martin

  3. echo $begrueszung;

    $string = "Ich heiße $name";
    $name = "Martin"

    Wie schaffe ich es, daß $name noch mit in $string "eingearbeitet" wird?

    Man kann das mit Hilfe von Platzhaltern und späterem Ersetzen tun.

    $string = "Mein Pseudonym ist %s";

    $name = sprintf($string, 'dedlfix');

    printf("%s %s!", getVerabschiedungsfloskel(), $name);