2014-10-01 4 views
0

일부 값을 출력하는 두 개의 함수가 있습니다. 두 번째 함수에서 $ mv 변수를 사용해야합니다. 그러나 $ mv는 첫 번째 함수에서만 정의 할 수 있습니다. 나는 모든 유형의 PHP 전역 예제를 시도했지만, 둘 다 $ mv 변수를 두 번째 함수에서 사용하거나 표시하거나 액세스 할 수 있도록 허용하지 않았습니다.다른 함수에서 변수에 액세스하려면 어떻게해야합니까?

function printMobilePrev(&$mobileprevresults) { 
     if (count($mobileprevresults->getRows()) > 0) { 




    $mv = $mobileprevRows[0][0]; 

    $mobileprevRows = $mobileprevresults->getRows(); 

    echo '<p>Previous period (sessions): '.$mobileprevRows[0][0].'..............................'; 


    } else { 
    print '<p>No results found.</p>'; 
    } 

} 


function printMobileCurr(&$mobilecurrresults) { 
    if (count($mobilecurrresults->getRows()) > 0) { 



    $mobdiff = ($mobcur - $mv); 

    $mobpctchg = ($mobdiff/$mobprev) * 100; 

    $mobilecurrRows = $mobilecurrresults->getRows(); 


    echo '<p>Previous period (sessions): '.$mobileprevRows[0][0].'..............................'; 
    echo '<p>Previous period (sessions): '.$mv.'..............................'; 
    echo '<p>Current period (sessions): '.$mobilecurrRows[0][0].'..............................'; 

    if ($mobdiff > 0){ 

     echo '<p>Percent increase: '.$mobpctchg.'..............................'; 
    } else { 
     echo '<p>Percent decrease: '.$mobpctchg.'..............................'; 
    }  

    } else { 
    print '<p>No results found.</p>'; 
    } 

} 

답변

1

를 들어 당신이 사용할 수있는 global scope :

$mv = 0; 

function function1() 
{ 
    global $mv; 
    $mv = 'whatever'; 
    //code 
} 

function function2() 
{ 
    global $mv; 
    // use $mv; 
} 
+1

첫 번째'global $ mv;'는 아무것도하지 않습니다 –

+0

@ 대각법 당신이 맞습니다, 주목 해 주셔서 감사합니다 –

0

외부 변수를 미리 정의해야하며 그런 다음 전역 변수를 사용하여 모든 기능을 사용할 수 있습니다.

+1

이 필요하지 않습니다 사용하기 전에 두 번째 함수의 시작 부분에서 첫 번째 기능에에게 글로벌

global $mv; $mv = $mobileprevRows[0][0]; 

사용 값을 asigning 전에 지구와 같은 $의 MV 변수를 선언 밖에 정의 될 수 있습니다. 거기에 초기화되어 있어도, 그것을 사용하는 함수 안에'global' 키워드가 있어야합니다. 또는'$ GLOBALS [ 'mv']'또는 그보다 더 나은 것은 여전히 ​​처음부터 반환하고 두 번째로 전달하는 것이 좋습니다. –

+0

@MichaelBerkowski 맞아! 나는 그것을 잊었다. –

0

참조로 전달할 수 있습니다. 예를

function doSomething(&$mv) { 
    $mv = 1; 
} 

function doSomethingElse($mv) { 
    return $mv; 
} 

$mv = 0; 
doSomething($mv); 
echo doSomethingElse($mv); //Output: 1 
0

당신은 인쇄 후 $ MV를 반환하고, VAR에 그를 절약 할 수있다 : 당신이 원하는 무엇

다음 함수로 전달하기 :

$printMobilePrev = printMobilePrev(); 

function printMobilePrev(&$mobileprevresults) { 

    $mv = $mobileprevRows[0][0]; 

    ... 
    print '<p>No results found.</p>'; 
    return $mv; 
    ... 

} 

$printMobileCurr = printMobileCurr(&$mobilecurrresults,$mv); 

function printMobileCurr(&$mobilecurrresults,$mv) { 
    ...... 
} 
0

대부분의 l 당신은 전역의 올바른 사용을해야합니다.

function printMobileCurr(&$mobilecurrresults) { 
if (count($mobilecurrresults->getRows()) > 0) { 
global $mv;