2017-12-15 1 views
0

, 나는 보통 기능에 연관 (배열이 쉽게 변화되기 때문에) 배열 extract()로 함수에 인수를 전달 :연관 배열 함수 인수를 추출하는 방법과 PHP에서 배열의 구성 요소를 참조로 전달하는 방법은 무엇입니까? 확장 성을 목적으로

$a = 'a'; ....... $n = 'n'; 

$arg = array(
    'a' => $a, 
    . 
    . 
    'n' => $n 
); 

function doStuff($arg) { 
    extract($arg); 
    // etc 
} 

하지만 같은 일을하려고하지만 통과 실패 참조에 의해 $ arg의 변수 (들) 구성 요소.

$a = 'x'; 

내가이 작업을 수행 할 수 있습니다

: 당신은 추출 방법을 사용하여이 작업을 수행하려면 어떻게

$a = 'a'; 

function doStuff(&$var) { 
    $var = 'x'; 
} 

doStuff($a); 

echo $a; // ---> echoes 'x' 

예를 들어, 다음과 같은 결과를 얻을 수 있습니까? 예를 들어, 다음과 같은 에코 'A'가 아닌 'X':

$a = 'a'; ....... $n = 'n'; 

$arg = array(
    'a' => $a, 
    . 
    . 
    'n' => $n 
); 

function doStuff(&$arg) { 
    extract($arg); 

    $a = 'x'; 
} 

doStuff($arg); 

echo $a; // echoes 'a' 

나는이 시도 :

$arg = array(
    'a' => &$a, 
    . 
    . 
    'n' => $n 
); 

이 가능 (이 경우)하기 위해 여기 extract()을 사용할 수 있나요 $a echo 'x'?

+2

* "echo doStuff ($ a); * "x"*를 표시하는 명령문의 어떤 부분? doStuff() 함수는 아무 것도 표시하지 않고'echo'는'doStuff()'['return'] (http://php.net/manual/en/function.return.php), 절대적으로 아무 것도. – axiac

+0

죄송합니다 - 편집하려고 하시던 분이 서둘렀다 –

+2

'EXTR_REFS 'flag. ['extract()'] (http://php.net/manual/en/function.extract.php)의 설명서를 참조하십시오. –

답변

0

당신이 참조로 $ 인수 배열을 전달되기 때문에 그것은 $ 함수의 범위 밖이 변경 내용을 반영하도록 변경해야합니다 배열을 Arg이고, 그래서 당신이 결합하거나 구축 사용할 필요가 있다고 생각 $는 변경된 값을 다시 다른 방법으로을 arg를 : http://sandbox.onlinephpfunctions.com/code/70b4b5e7d90b829588aa0fd0b3caf621fa1b5ed3

+0

배열에 대해 신경 쓰지 않아요. 배열, $ arg의 'a'키, 즉 $ a –

0

내가 공동 사용 :

function doStuff(&$arg) { 
    extract($arg); 
    $a = 'x'; 
    $arg = combine(...); 
    // OR 
    $arg = ['a' => $a]; 
} 

그것을 실행 보려면 Patrick Q의 정답은 다음과 같습니다.

$a = 'a'; ....... $n = 'n'; 

$arg = array(
    'a' => &$a, 
    . 
    . 
    'n' => $n 
); 

function doStuff($arg) { 
    extract($arg, EXTR_REFS); 

    $a = 'x'; 
} 

doStuff($arg); 

echo $a; // echoes 'x' 
관련 문제