PHP felder aus $this verwenden

  • Ich würde gerne Felder aus dem $this ansprechen, tue mich aber mit den Ebenen etwas schwer.

    Debug für $this->eventranking:

    Nun möchte ich mit $this->eventranking->div_name an der Stelle weiter arbeiten, aber da bin ich gedanklich scheinbar auf dem Holzweg, ist immer leer:/

    Mach ich also an selber Stelle ein Debug auf $this->eventranking->div_name, dann wird mir nur heisse Luft angezeigt, scheint wohl so als würde ich mich dafür nicht auf der richtigen Objekt-Ebene bewegendance

    Kann mich bitte jemand in die richtige Richtung schubsen wie ich das angehen muss:?:

  • Ich kann dir nicht ganz folgen wo genau versucht du das aufzurufen?


    Wenn ich das richtig sehe ist $this->eventranking ein array mit dann einen stdClass drin? Versuch mal $this->eventranking[0]->div_name dann solltest du den erste bekommen.


    und mit nem foreach loop über $this->eventranking dann alle.

  • Prima Idee

    Wo ich das aufrufe, im view der Komponente.

    es ist zum verrückt werden im var_dump($this->eventranking) sind die Felder vorhanden.

    Aber beim Versuch eines der Felder anzusprechen beiße ich auf Granit.

    Meine Versuche:

    Als Ausgabe bekomme ich:

    Code
    header on 10 string(8) "result->" array(1) { [0]=> NULL } string(11) " Position->" NULL string(6) " Key->" bool(false) string(7) " Key1->" bool(false) string(7) " Key2->" NULL

    Das macht einen Irre, etwas existierendes wird nicht gefunden.

    Und das Ganze nur weil man im Wald umherirrt und den Wald vor lauter Bäumen nicht sieht *Grrrr

  • Da scheinen auch noch schließende '}' zu fehlen oder der Auszug ist nicht vollständig.


    $this->eventranking scheint ein array zu sein wo stdClass Objecte drin sind, warum auch immer scheint es ID 0 nicht zu geben..


    $this->eventranking[1]->[0]->div_name ggf.?


    Sonst pack $this->eventranking doch mal in nen foreach und schau was dann raus kommt im debugger als key + value

  • $this->eventranking[1]->[0]->div_name das mag er überhaupt nicht, weiße Seite.

    Ich werde wohl um das foreach nicht herumkommen, ob ich damit auch was anfangen kann? Hüstel Hüstel.

    Aber die Hoffnung stirbt als letztes.


    Hoffe das ist so richtig, das Ergebnis ist zum Posten zu lang, daher mach ich es mal mit einem Link.

    Zum Ergebnis


    Code
    foreach ($this->eventranking as $value)
        {
            echo "<pre <b> header on 10 </b>",var_dump("result->",$value),"</pre>";
        
                foreach ($this->eventranking as $key->$value)
            {
                echo "<pre <b> header on 14 </b>",var_dump(" Key->",$key->value),"</pre>";
            }
        }

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von Trubadix mit diesem Beitrag zusammengefügt.

  • Ok hab das 2. entfernt, liefert eh nix.

    Das Ergebnis interpretiere ich je array mit 21 mal

    Code
    object(stdClass)

    und in jeder befindet sich gesuchtes Feld "div_name" mit gleichem Wert, ergo sollte die Ebene 0 ausrechend sein.

    Also ist doch eigentlich nach meinem Verständnis "$this->eventranking[0]->div_name" richtig

    und sollte den Wert liefern!?

    Kann doch nicht sein das ich das Object mit einer for-Schleife zerlegen muss um an den Wert für "div_name" zu kommen.

    Das muss doch einfacher gehen !?


    Mit rudimentärem Wissen lässt man ja nichts unversucht!

    Alles was die Coding -Versuche liefern, bringt mich im Moment nicht weiter *Grrrr

    Setze ich bei "this->eventranking" zu spät an, muss ich schon bei "this" mit der Auflösung beginnen?

    Code
    header on 18 string(7) "VALUE->" object(stdClass)#400 (16) { ["p"]=> string(6) "562.33" ["team_sum"]=> float(563.33) ["schnitt"]=> string(6) "562.33" ["round_sum"]=> string(6) "562.33" ["div_name"]=> string(10) "09-32-1.80" ["fname"]=> string(7) "Andreas" ["nname"]=> string(14) "09-21-006-0000" ["lname"]=> string(7) "Wiesner" ["country"]=> string(3) "DEU" ["pid"]=> string(4) "3115" ["picture"]=> string(65) "images/com_joomleague/database/placeholders/placeholder_150_2.png" ["tid"]=> string(3) "372" ["tname"]=> string(23) "09-21-006 SV Gümmer I." ["tmiddle_name"]=> string(13) "SV Gümmer I." ["dsum"]=> string(6) "562.33" ["rank"]=> int(1) } string(11) " Ist Arry? " bool(true) string(5) " Key " int(20)

    Ich glaube ich gebe auf, bin wohl zu alt für den Sch......

    Mein letzter Versuch:

    Und das kommt dabei raus, also könnte ich mir mit einer wilden Stringoperation den dazugehörigen Wert hohlen *Würg

    Code
    header on 20 string(7) "VALUE->" object(stdClass)#400 (16) { ["p"]=> string(6) "562.33" ["team_sum"]=> float(563.33) ["schnitt"]=> string(6) "562.33" ["round_sum"]=> string(6) "562.33" ["div_name"]=> string(10) "09-32-1.80" ["fname"]=> string(7) "Andreas" ["nname"]=> string(14) "09-21-006-0000" ["lname"]=> string(7) "Wiesner" ["country"]=> string(3) "DEU" ["pid"]=> string(4) "3115" ["picture"]=> string(65) "images/com_joomleague/database/placeholders/placeholder_150_2.png" ["tid"]=> string(3) "372" ["tname"]=> string(23) "09-21-006 SV Gümmer I." ["tmiddle_name"]=> string(13) "SV Gümmer I." ["dsum"]=> string(6) "562.33" ["rank"]=> int(1) } string(17) " Ist Value Arry? " bool(true) string(5) " Key " int(20) string(15) " Pos on String " int(156)

    Habe es jetzt so gelöst, ist nicht elegant, aber funktioniert.

    Da beim ersten Post kein klickbarer Button "Thema bearbeiten" ist, bitte einer MOD's erbarmen und auf erledigt setzen.

    2 Mal editiert, zuletzt von Indigo66 () aus folgendem Grund: 2 Beiträge von Trubadix mit diesem Beitrag zusammengefügt.

  • Uff. Tut mir Leid, dass ich da etwas deutlicher werden muss. Das ist eine maximal umständliche und unsaubere Lösung. Das wird dir um die Ohren fliegen, sobald sich da irgendwas ändert, und sei es nur die Länge oder der Inhalt eines einzigen Strings in diesem Objekt. Und aus langjähriger Programmiererfahrung kann ich dir sagen: Das wird niemand, der nach dir diese Seite übernimmt, mehr verstehen. Und du selbst wirst es in wenigen Wochen auch nicht mehr verstehen und daher nicht mehr anpassen können, wenn noch irgendwas nicht passt.

    Vielleicht wäre es besser, damit jemanden zu beauftragen, der sich damit auskennt?


    Und nebenbei: Du verwendest mit JoomLeague eine Erweiterung, die seit mehreren Jahren nicht weiterentwickelt wird, und mit 2.5 eine Joomla!-Version, die seit sechs Jahren nicht mehr unterstützt wird und vor vier Jahren ein allerletztes Sicherheitsupdate bekommen hat, um eine kritische Lücke zu schließen (das hast du hoffentlich eingespielt). Lege dir da bitte schnellstmöglich eine aktuelle Alternative zu und schalte die 2.5er-Seite ab! Die Seite ist in der Form ein wandelndes Sicherheitsrisiko.