2016-07-29 2 views
-3

이 질문은 약간 n00b이지만 저는 아래의 PHP 객체 내에서 배열 'ta []'에 액세스하는 방법을 고민하고 있습니다. 보통 아무 문제가 없지만 내 키에 괄호가 들어 있기 때문에 'ta []'에 액세스하는 방법에 대해 머리를 감쌀 수 없으므로 어떻게 든 탈출해야합니다.PHP 객체 내 배열에 액세스하는 방법

나는 ..

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

어떤 도움을 환영 을 같은 대부분의 조합을 시도했다! 그것은 당신이를 정의 할 수 있습니다 :

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

중첩 된 개체 및 배열에 액세스하는 방법을 정확히 보여줍니다. 또한 잘못된 속성 이름이있는 경우에도 적용됩니다. 그래서 그것은 당신의 질문에 답합니다. – Rizier123

+0

touché ok 충분히 공짜로 놓친 것 – Zinc

답변

3

이 그것을

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

중괄호 표기법 ({} 사용) ([] 사용) 배열의 키에 액세스하지 브래킷 표기법으로 개체 속성을 액세스하기위한 같은 일을해야 속성 이름을 표현식으로 사용합니다.

이 경우 단순한 문자열이지만 다른 표현식이 될 수 있습니다.

function ta() { 
    return 'ta'; 
} 

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

감사합니다. $ obj -> { "ta []"} [0] 작품을 확인합니다. 이유를 설명해 주시겠습니까? – Zinc

+0

예, 자세히 설명했습니다. –

+0

대단히 감사합니다. 피터는 이해 관계와 관련이 있습니다. 어떻게하면 나뭇 가지와 같은 템플릿 엔진에서 액세스 할 수 있습니까? 그렇지 않은 경우 별도의 질문을 제기 할 것입니다. 다시 한 번 감사드립니다! – Zinc

관련 문제