2013-03-31 2 views
6

PHP가 왜 뾰족한 값을 전역 변수로 유지할 수 없습니까? PHP Manual FROMPHP 전역 변수를 포인터로 설정할 수 있습니까?

<?php 
    $a = array(); 
    $a[] = 'works'; 
    function myfunc() { 
     global $a, $b ,$c; 
     $b = $a[0]; 
     $c = &$a[0]; 
    } 
    myfunc(); 
    echo ' $b '.$b; //works 
    echo ', $c '.$c; //fails 
?> 
+0

이 페이지를 참조하십시오. http://stackoverflow.com/questions/p46508/are-there-pointers-in-php –

답변

4

:

당신이 변수에 대한 참조를 할당하면

가 함수 내에서 global로 선언

경고, 참조는 함수 안에서만 볼 수 있습니다. 은 $ GLOBALS 배열을 사용하여이를 피할 수 있습니다.

...

글로벌 $ var에 대해 생각해; $ var = & $ GLOBALS [ 'var'];의 바로 가기로. 따라서 $ var에 다른 참조를 할당하면 로컬 변수의 참조 만 변경됩니다.

<?php 
$a=array(); 
$a[]='works'; 
function myfunc() { 
global $a, $b ,$c; 
$b= $a[0]; 
$c=&$a[0]; 
$GLOBALS['d'] = &$a[0]; 
} 
myfunc(); 
echo ' $b '.$b."<br>"; //works 
echo ', $c '.$c."<br>"; //fails 
echo ', $d '.$d."<br>"; //works 
?> 

더 자세한 정보는 아래를 참조하십시오 What References Are NotReturning References

0

PHP는 포인터를 사용하지 않습니다. 매뉴얼은 정확히 참조가 무엇인지,해야 할 것과하지 않는지에 대해 설명합니다. 귀하의 예는 specificly 여기에 언급되어 http://www.php.net/manual/en/language.references.whatdo.php 은 당신이 뭘 하려는지 달성하기 위해,과 같이 수동으로 설명대로는 $ GLOBALS 배열에 의존해야합니다 myfunc에에서

<?php 
$a=array(); 
$a[]='works'; 
function myfunc() { 
global $a, $b ,$c; 
$b= $a[0]; 
$GLOBALS["c"] = &$a[0]; 
} 
myfunc(); 
echo ' $b '.$b; //works 
echo ', $c '.$c; //works 
?> 
0

() 사용 전역 $ a, $ b, $ c.

는 그런 다음 $ C를 할당 = & $ A [0]

참조는이 myfunc 내부 만 볼().

자료 : http://www.php.net/manual/en/language.references.whatdo.php

"전역의 $ VAR 생각해, 로컬 변수 만의 기준을 변경하는 $ var에 바로 가기 = & $ GLOBALS [ 'VAR'] ;. 따라서 $ var에 또 다른 참조를 지정한다. "

+0

@Ultimater와 Akam이 저를 앞서 가지고 있어요 :) 건배 –

관련 문제