2012-03-28 2 views
0

문자열 ("[ 'parent_array'] [ 'child_array']")을 함수에 전달하여이 문자열과 "my_array"를 그 앞에 가져올 수 있기를 원합니다. 변수 변수를 만듭니다.배열 변수를 구성하는 변수 변수

그런 다음 함수 내에서 print_r ($$ string)을 수행하고 아무 것도 나옵니다. 더 자세한 설명은 아래 코드를 참조하십시오.

// DOES NOT WORK 
$string1 = "my_array['parent_array']['child_array']"; 
print_r($$string1); //prints nothing. 

// WORKS 
$string2 = "test"; 
$test = "This will be printed!"; 
print_r($$string2); //prints "This will be printed! 

// WORKS 
print_r($my_array['parent_array']['child_array']); 
+2

내가 왜 이런 식으로 변수를 구축하고 요청 수 예제? 나는 * (떨리는) 변수보다 더 합리적인 접근법이 존재하기 때문에 많은 돈을 걸 수 있습니다. – JJJ

+2

및/또는 eval, 나중에 응답 중 하나가 실제로 eval을 사용하는 것이 좋습니다 내기 –

+2

@andreas 완료보다 더 빨리 말한 ... – JJJ

답변

0

가변 변수는 추악하고 못생긴 해킹입니다.

eval을 사용하십시오.

예 :

$expr = "\$my_array['parent_array']['child_array']"; 
$val = 'not assigned'; 
eval("\$val = $expr;"); 
print_r($val); 

그러나 사용자가 제공 한 코드를 evaling의 위험에 대한 자신의 경고를 따르십시오.

업데이트 :

+0

이것이 어떻게 생겼는지 예제를 얻을 수 있습니까? – halliewuud

+2

둘 다 추악한 해킹 IMHO입니다. 거의 항상 더 나은 솔루션이 있습니다. OP에 대한 진정한 질문은 왜 당신이 그것을 필요로한다고 생각합니까? – PeeHaa

+0

@RepWhoringPeeHaa 여기를보세요 : http://pastebin.com/bBS4iiMC "line29. $ arrXml [ 'Assignments'] [ 'Assignment']" – halliewuud