Array von Objekten



  • Hallo!

    Aus C bin ich es gewohnt, zusammengehörige Daten in ein struct zu packen. Das scheint es in PHP ja nicht zu geben, dafür aber das Konstrukt class.

    Ich möchte nun ein Array aufbauen, welches auf jedem Platz ein Objekt speichert.

    Etwas vereinfacht dargestellt sieht der Code so aus:

    class daten
    {
    	var $id;//natürlich hat die class sonst mehr als eine var *g*
    }
    
    $d=new daten;
    
    $d->id=10;
    $a[0]=$d;
    $d->id=11;
    $a[1]=$d;
    
    echo("$a[0]->id  --  $a[1]->id")
    

    Die Ausgabe ist aber die folgende: Object->id -- Object->id
    Ich möchte aber logischerweise: 10 -- 11

    Grüße,
    Harri



  • echo("$a[0]->id  --  $a[1]->id")
    

    gib das mal so aus:

    echo($a[0]->id . " --  " . $a[1]->id)
    

    dann sollte das klappen.

    Wenn Du die Variablen im String lässt, dann werden nur Variablen "1. Ordnung" (ich nenn das mal so) ersetzt, also

    echo("$var1");      // geht
    echo("$var[test]"); // geht glaub' ich auch noch
    echo("$var[test][test2]"); // geht nicht mehr
    ...
    

    Ich hab's mir einfach angewöhnt Variablen generell nicht mehr im String zu schreiben und fahre sehr gut damit.



  • Vielen Dank!

    Das wars!

    Grüße,
    Harri



  • besser (kuerzer) so (ich hoffe ich hab die syntax noch im kopf, war lange her..):

    echo "blub blab ${a[0]->id} blub blab";
    

    mfg aman..



  • @aMan: So wie von dir beschrieben funktionierts bei mir leider nicht.

    Aber ich hab inzwischen das Konzept sowieso ganz geändert: Anstatt einem Array von Objekten hab ich nun eine Klasse erstellt die Arrays enthält. Das funktioniert einwandfrei.

    Grüße,
    Harri



  • // Aus der PHP Doku (http://at.php.net/manual/en/function.echo.php)
    //
    // You can also use arrays
    $bar = array("value" => "foo");
    
    echo "this is {$bar['value']} !"; // this is foo !
    

    So wars, also {$ statt ${..

    MfG aMan..



  • Na, das ist ja mal interessant. Man lernt halt nie aus. 🙂

    THX für den Hinweis.


Anmelden zum Antworten