2013-12-16 8 views
0

파일에서 변수를로드하는 중, 변수를 다른 변수를 기반으로 변수를 반향시켜야합니다. 여기변수에 변수를 반향합니다.

<?php 
ob_start(); 
include 'states-desc/before_after_table_description.php'; 
ob_end_clean(); 
echo $alabama_after; 
?> 

지금, 나는 $ state_name_after와 alabama_after 에코 $를 교체해야하는 코드를입니다.

변수가 이미 상단 페이지에로드 된 경우 $ state_name입니다. 그 주 이름은 플로리다라고합니다. 내가 떨어질 때 $ state_name_before; 변수가 $ florida_before가되고 include 파일 변수 $ florida_before;의 내용을 반향해야합니다.

어떤 방법으로 변수 이름을 변수에 넣을 수 있습니까?

+1

'나는 $ state_name_after.'와 에코 $의 alabama_after를 교체해야 - 무엇 그 뜻 이니? –

+2

그는 $ { "state _ {$ name} _after"} –

+0

을 사이드 노트에 넣기를 원한다고 생각합니다. 포함 된 코드 나 일반적인 코드 구조가 무엇인지 전혀 알지 못하지만 거의 모든 것을 할 수 있습니다 상태에 대한 변수를 개별적으로 하드 코딩하는 대신 일종의 배열 구조에 상태를 두는 것이 더 쉽습니다. –

답변

2

아마도 eval()과 같은 것을 찾고 계십니까?

+1

이것은 직접적인 문제를 해결할 수 있지만 모든 가능한 경우 'eval'을 사용하지 마십시오. 그것은 당신의 코드에서 매우 위험한 보안 허점을 열어줍니다. – andrewsi

2

아마 "가변 변수"가 필요합니다.

PHP 5.3.26에서 다음을 테스트했습니다.

파일 i.php :

<?php 
$alabama_after = "montgomery"; 

파일 p.php :

<?php 

ob_start(); 
include "i.php"; 
ob_clean(); 

$state_name = "alabama"; 

$state_name_after = "{$state_name}_after"; 

// the following two echo the same thing: 
echo $alabama_after . "\n"; 
echo $$state_name_after . "\n"; 

출력 :

$ php p.php 
montgomery 
montgomery 

도 참조 http://www.php.net/manual/en/language.variables.variable.php


그러나 연관 배열을 사용할 수있을 때 왜이 방법을 사용하는지 궁금합니다.

<?php 
$after_data = array(
    "alabama" => "montgomery" 
); 

을 그리고 p.php은 다음과 같이 수 있습니다 : 예를 들어, i.php는 다음과 같이 할 수

<?php 

ob_start(); 
include "i.php"; 
ob_clean(); 

$state_name = "alabama"; 

$state_name_after = $after_data[$state_name]; 

echo $state_name_after . "\n"; 
+0

감사합니다. 나는 그것을 시도했지만 어떤 이유로'$ state_name'을 할 때'alabama '를 얻습니다. '$ alabama_after'를 실행하면 include 파일에서 텍스트를 가져 오지만'$$ state_name_after'는 필요한 변수를 echo하지 않습니다. '$ state_name_after = "{$ state_name} _after";'를 실행 한 후에도 페이지의 빈 공간이며 오류가 없습니다. 이상한 – Roger

+0

나는 그것을 확인하기 위해 그것을 테스트했다. 위의 수정 사항을 참조하십시오. 또한 데이터를 구성하는 다른 방법을 제안합니다. –

+0

다시 한 번 감사드립니다. 나는 여전히 빈 페이지를 얻었고, 에코는 오류가 없다. PHP 설정에서 뭔가를 변경해야하는지 잘 모르겠습니다. 그 데이터를 나머지 DB와 함께 저장하겠습니다. BTW, 나는이 방법을 내가 편집을 포함하고 매번 DB에 갈 필요가없는 대신에 포맷 할 수있어서 편리하게 사용했다. 나는 데이터가 잠시 동안 거기에있을 것이므로 편집 할 관리 영역을 만들지 않았다. – Roger

관련 문제