2013-05-26 2 views
2

이 내 경우이다. (내가 변경 내 경우)PHP 변수 행동이나 규칙

I 변수하자가 시험 방법에서 데이터베이스 및 방법 테스트 ($ var1에) 그런 다음

$var1 = getFromDatabase(); 
//now $var1 contaion "This is new variable".$var2 

에서 $ var1에 말을해야 나는 $ var1 방정식으로부터 간단한 문자열 연산을 수행 할 것이다.

test($var1){ 
    $var2 = "variable 2"; 
    //I want to extract $var1 so that string will be combined 
    $value = $var1; 

    $value_expected = "This is new variable".$var2; 
} 

그러나 $ 값에는 "This is new variable"이 포함됩니다. $ var2. $ value contains $ var1 방정식의 새로운 변수 변수 2입니다.

해결책이 있습니까? 그렇게 할 수 있습니까?

감사합니다.

답변

1

따옴표를 사용하지 마십시오. $var1 = $var2 + $var3;

지수는 그 외에도에서, 당신이 그와 같은 지역 변수에 액세스 할 수없는 문자열

로 작업하는 것을 의미한다. 함수 내에서 선언 된 변수는 변수 외부에서 액세스 할 수 없습니다. 그리고 비록 당신이 그것을 초기화하기 전에 당신이 $ var2와 $ var3을 사용하고 있기 때문에 당신이 기대하는 것을 얻지 못한다고하더라도. 당신이 찾고있는 무엇

+0

감사합니다. 1. 나는 외부에서 $ var2와 $ var3에 접근하지 않을 것이다. 2. $ var1을 동적으로 만들고 싶습니다. $ var1은 방정식을 포함합니다. 메소드 테스트는 $ var1의 간단한 방정식을 계산합니다. – guurnita

0

주변 기능을 전달함으로써 가능하다. 예를 들어

function test($var1) { 
    $var2 = 4; 
    $var3 = 5; 

    // this line calls the function named in $var1 with $var2 and $var3 as arguments 
    $value = call_user_func($var1, $var2, $var3); 

    // in later versions of PHP you can do this instead: 
    // $value = $var1($var2, $var3); 
} 

function addThem($a, $b) { 
    return $a + $b; 
} 
test('addThem'); 

조합 변수 방법은 함수로 전달되는 (또는 적어도 가까운 PHP 주변 기능을 전달하는 갖는다 PHP 홀수 언어) 고지있다. 또한 작동하는 값을 매개 변수로 전달해야합니다.

+0

ur 응답을위한 Thx. 네, 오랜 시간이 걸리 겠지만 첫 번째 경우에는 효과가 있습니다. 내 두 번째 케이스를 확인하십시오. $ value_expected를 사용하여 $ value를 동일한 출력으로 만들 수 있습니까? – guurnita

+1

@guurnita 업데이트 된 질문은 심각한 보안 위험을 줄 것입니다. 더 나은 솔루션'<>'문자열에 투입 될 수있다, 그 다음'(당신도'은'$ var1' 이름을 str_replace' 수 있지만, 그게 것 같다 기능에서 그들을 str_replace'하는 등의 사전 결정적인 토큰을 사용하는 것입니다 사용자에게 혼란 스러울 것입니다.) – Dave

+0

yaah .. thx는 아이디어에 대해 확실히 .. – guurnita