2016-07-29 48 views
-3

Ich weiß, dass diese Frage ein wenig n00b ist, aber ich habe Schwierigkeiten zu erarbeiten, wie Sie auf das Array 'ta []' innerhalb des PHP-Objekts zugreifen können. Normalerweise hätte ich kein Problem, aber weil mein Schlüssel die Klammern enthält, d. H. 'Ta []' Ich kann meinen Kopf nicht darum herumschlingen, wie ich darauf zugreifen kann, ich denke, ich muss irgendwie entkommen ...?Zugriff auf Array innerhalb PHP-Objekt

Ich habe die meisten Kombinationen versucht, wie ..

object->ta[] 
object["ta[0]"] 
object["ta[]"] 
object->ta[0] 

Jede Hilfe willkommen!

object(stdClass)#6 (11) { 
["tc"]=> string(4) "4500" 
    ["tct"]=> string(1) "1" 
    ["pd"]=> string(2) "AT" 
    ["df"]=> string(10) "08/04/2016" 
    ["dt"]=> string(10) "08/08/2016" 
    ["nt"]=> string(1) "2" 
    ["ta[]"]=> array(2) 
     { 
     [0]=> string(2) "40" 
     [1]=> string(2) "35" 
     } 
    ["rc"]=> string(2) "US" 
    ["rs"]=> string(2) "AR" 
    ["cc"]=> string(2) "US" 
    ["dfp"]=> string(10) "07/30/2016" 
} 
+2

Das Duplikat zeigt genau, wie Sie auf verschachtelte Objekte und Arrays zugreifen können. Es deckt auch Ihren Fall ab, in dem Sie einen ungültigen Eigenschaftsnamen haben. So beantwortet es deine Frage. – Rizier123

+0

touché ok fair genug verpasst, dass – Zinc

Antwort

3

Dies sollte es tun

$obj->{"ta[]"}; 

Brace Notation (mit {}) nicht das gleiche für Objekteigenschaften als Klammer-Notation Zugriff (mit []) hat für den Zugriff auf Array-Schlüssel: Damit können Sie die definieren Eigenschaftsname als Ausdruck

Was in diesem Fall nur eine einfache Zeichenfolge ist, könnte aber jeder andere Ausdruck sein. Um das mit einem (albernen) Beispiel zu beweisen:

function ta() { 
    return 'ta'; 
} 

$obj = new stdClass; 
$obj->{ta() . '[]'} = ['a', 'b']; 
echo $obj->{"ta[]"}[1]; // b 
+0

perfekt danke, ich bestätige $ obj -> {"ta []"} [0] funktioniert. Kannst du erklären warum? – Zinc

+0

Ja, hinzugefügt mehr Details –

+0

Vielen Dank Peter macht Sinn - bezogenes Thema, wie würden Sie dies innerhalb einer Vorlage-Engine wie Twig zugreifen? Wenn nicht, wird eine separate Frage aufwerfen. Danke noch einmal! – Zinc

Verwandte Themen