Kann eine Variable in der Ausgabe von print_r() sehen, ist sich aber nicht sicher, wie man im Code darauf zugreift

Lesezeit: 6 Minuten

Kann eine Variable in der Ausgabe von print r sehen ist
Dirk v B

Ich habe gegoogelt, Devel, Drupal für Firebug installiert, aber ich kann es nicht finden.

ich fand was Ich will, ich weiß wo es ist; Ich weiß es einfach nicht wie es bekommen.

Ich setze dies in Code-Klammern, aber Devel sagt mir, dass der Dateiname (den ich in die .tpl.php-Datei einfügen möchte) hier ist:

field_image (Object) stdClass 
  handler (Object) views_handler_field_field 
    view (Object) view 
      result (Array, 2 elements) 
        0 (Object) stdClass 
          _field_data (Array, 1 element) 
            nid (Array, 2 elements) 
              entity (Object) stdClass
                field_image (Array, 1 element) 
                  und (Array, 1 element)
                    0 (Array, 11 elements)                                      
                      filename (String, 23 characters ) FILENAME.jpg

Wie bekomme ich also, dass FILENAME.jpg mit PHP ausgegeben wird?

<?php print $something->other; ?>

  • SimpleXML: Wenn Sie eine haben print_r eines SimpleXMLElement-Objekts werden hier Antworten gegeben: Wie bekomme ich Werte von XML-Elementen? und Zugreifen auf @attribute von SimpleXML

    – hakre

    4. November 2012 um 9:23 Uhr


  • Nochmals vielen Dank, hakre. Tolle Antworten und Kommentare, und ich verweise immer noch hin und wieder auf diesen Beitrag, wenn ich in Code eintauche, da ich hauptsächlich mit UX- und designbezogenen Aufgaben beschäftigt bin.

    – Dirk v B

    12. November 2012 um 0:41 Uhr

  • Erkunden Sie Ihre print_r-Ausgabe interaktiv (guten Dank @mario): array.include-once.org

    – hakre

    23. Dezember 2014 um 16:47 Uhr


  • Beginnen Sie von oben und wann immer Sie sich vom Objekt zur nächsten Ebene bewegen, verwenden Sie den Pfeil (“->”) und wenn Sie sich vom Array bewegen, platzieren Sie das Element der nächsten Ebene in eckige Klammern.

    – MilanG

    27. Oktober 2017 um 8:31 Uhr

Kann eine Variable in der Ausgabe von print r sehen ist
hakre

Immer wenn Sie einen Wert aus einer Variablen auslesen müssen, müssen Sie wissen, welchen Ausdruck Sie formulieren müssen, um auf diesen Wert zuzugreifen.

Für einen einfachen Variablenwert ist dies einfach, Sie nehmen einfach den Variablennamen und greifen als Variable darauf zu, indem Sie ihm das voranstellen $ Schild:

var_dump($variable);

Dies ist hier dokumentiert.

Dies funktioniert jedoch nur für einfache Datentypen wie string oder integer. Es gibt auch zusammengesetzte Datentypen, nämlich array und object. Sie können weitere Datentypen enthalten, seien es einfache oder zusammengesetzte. Wie das geht, erfahren Sie im PHP-Handbuch auf die Werte eines Arrays zugreifen und wie Sie können von einem Objekt darauf zugreifen. Ich denke, das weißt du schon ein bisschen, also nur, dass du es hier verlinkt hast.

Wenn du das gelernt hast, kannst du das dann kombinieren. Wenn es zB ein Array innerhalb eines Objekts gibt und darin eine Zeichenfolge, die Sie erhalten möchten, müssen Sie die kombinieren $ sign und den Variablennamen mit den benötigten Accessoren, Eigenschaftsnamen und Array-Schlüsseln. Dann bekommst du deinen Wert. Die von Ihnen geposteten Daten zeigen, dass Sie ein Objekt haben, das einige andere Objekte und Arrays enthält, und am Ende finden Sie den Variablennamen.

Einige Kombinationsbeispiel:

var_dump($variable->handler->view[0]->_field_data);

Dies basiert auf den Daten, die Sie oben angegeben haben. $variable Hier fängst du an, -> wird verwendet, um auf Objektmitglieder zuzugreifen, die dann benannt werden müssen (wie ein Name für eine Variable): handler. Wie Sie in Ihrer Debug-Ausgabe gesehen haben handler ist ein Objekt, das Sie erneut verwenden müssen -> um auf die zuzugreifen view Mitglied davon.

Jetzt view ist anders, weil es ein Array ist. Sie greifen auf Werte eines Arrays zu, indem Sie verwenden [] und den Schlüssel dort reinstecken. Der Schlüssel in meinem Beispiel ist eine Zahl, 0. Und da der Wert dieses Array-Eintrags wieder ein Objekt ist, müssen Sie im nächsten Schritt verwenden -> aufs Neue.

Sie können dieses Spiel fortsetzen, bis Sie das Element erreichen, das Sie interessiert. Die Debug-Ausgabe, die Sie bereits haben, hilft Ihnen, den Ausdruck zu schreiben, der den Wert zurückgibt. Möglicherweise ist es:

$field_image->handler->view->result[0]->_field_data['nid']['entity']->field_image['und'][0]['filename']

Aber das kann ich hier auf meinem System nicht vollständig validieren.

Wenn Sie jedoch Dinge herausfinden, ist es hilfreich, sie zu verwenden var_dump wie Sie den Ausdruck Schritt für Schritt erweitern könnten, bis Sie das Element finden. Wenn Sie einen Fehler machen, werden Sie sofort sehen. Manchmal hilft es, a zu platzieren die(); nach dem var_dump Anweisung, um die Antwort nicht zu beenden, bevor sie zu viele andere Daten enthält, die die Informationen vor Ihnen verbergen. Das Devel-Plugin bietet zusätzliche Debug-Routinen, um prominente Werte abzuspeichern.

  • Da das OP Devel installiert hat, kann er dessen Debugging-Funktion nutzen, inkl dsm().

    – apaderno

    12. Juni 2011 um 14:15 Uhr

  • Arrays und Objekte “enthalten” keine Datentypen.

    – Leichtigkeitsrennen im Orbit

    12. Juni 2011 um 15:30 Uhr

  • Der Unterschied besteht darin, dass semantisch eine Variable ganz sicher ist tut enthalten einen Wert, aber nichts enthält andere Datentypen als die Sprache und den Programmkontext. Punkt genommen, aber 😛

    – Leichtigkeitsrennen im Orbit

    12. Juni 2011 um 15:42 Uhr

  • Vielen Dank für die ausführliche Antwort! Alles, was ich brauchte, war, es fertig zu sehen, aber ich denke, wenn ich es später vermassele, kann ich das hier lesen 😉 Entschuldigung für das versteckte “TLDR” dort, es ist offensichtlich eine großartige Antwort, aber ich gehöre zu den Menschen, die am besten lernen, wenn sie sehen, wie etwas erledigt wird. Die eigentliche Antwort auf mein Beispiel lehrte mich alles, was ich für den Moment wissen musste. Wieder eine tolle Antwort, Prost!

    – Dirk v B

    12. Juni 2011 um 23:49 Uhr

Wenn dies Ihr Objekt ist:

field_image (Object) stdClass 
  handler (Object) views_handler_field_field 
    view (Object) view 
      result (Array, 2 elements) 
        0 (Object) stdClass 
          _field_data (Array, 1 element) 
            nid (Array, 2 elements) 
              entity (Object) stdClass
                field_image (Array, 1 element) 
                  und (Array, 1 element)
                    0 (Array, 11 elements)                                      
                      filename (String, 23 characters ) FILENAME.jpg

Ich denke, Sie können es finden mit:

field_image->handler->view->result[0]->_field_data['nid'][entity]->field_image['und'][0]['filename]

Könnte ein Fehler sein, aber die allgemeine Idee ist: Wenn Sie ein Objekt haben, holen Sie sich die Variable mit ->und wenn Sie ein Array haben, verwenden Sie [key].

  • Ja, es gibt ein oder zwei Fehler, aber die allgemeine Idee hat funktioniert. Vielen Dank für die Beantwortung! Prost,

    – Dirk v B

    12. Juni 2011 um 23:46 Uhr

Angenommen, Sie haben ein Knotenobjekt in $node. Sie können seine Werte sehr schön drucken mit:

dpm($node); // remember this function is declared in devel module

Dann können Sie die Informationen von $node sehen und die internen Felder mit einem Klick erweitern. Und mit einem Doppelklick auf das Feld können Sie den PHP-Pfad sehen.

Entwicklungsinformationen eines Drupal-Node-Objekts

Sie erhalten dieses Ergebnis:

Devel zeigt den Pfad nach einem Doppelklick auf ein Feld

Ich hoffe, das hilft!

PD: Ich schätze, diese Funktionalität ist auf D6s dpm nicht verfügbar.

Versuchen:

$field_image->handler->view->result[0]->_field_data['nid']['entity']->field_image['und'][0]['filename']

Wenn Sie devel installiert haben und versuchen Sie es

krumo ($variable);

Denken Sie daran, dass standardmäßig nur Admin-Benutzer Rechte zur Verwendung des krumo-Befehls haben, aber dies kann durch einen Blick auf die DEVEL-Rollenberechtigungen geklärt werden. (Vergessen Sie nicht, diese Berechtigungen zu entfernen, sobald Sie fertig sind.)

1646952248 866 Kann eine Variable in der Ausgabe von print r sehen ist
Ingrid

<? print_r($something["other"]); ?>

(wo das andere ist) also ist das Ergebnis ‘dies’

Lassen Sie mich zusammenfassen

print_r($data); => Traditional view of printing array.

var_dump($data); => Not so much cleaned view , gives you everything but in very suffocated manner

print "<pre>"; print_r($data); => A cleaned view but will not get   data types information.

dpm($data); => It gives you everything, but you need to have installed devel.

989190cookie-checkKann eine Variable in der Ausgabe von print_r() sehen, ist sich aber nicht sicher, wie man im Code darauf zugreift

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy