2014-01-28 4 views
0

foreach에서 변수 앞에 앰퍼샌드 기호가 있습니다. 나는 앰퍼샌드가 이전에 정의 된 변수 주소를 가져 오는 데 사용된다는 것을 알고있다.foreach에서 변수 앞에 앰퍼샌드

나는 다음과 같은 코드를 보았다 :

<?php 
$arr = array(1, 2, 3, 4); 
foreach ($arr as &$value) { 
    $value = $value * 2; 
} 

// $arr is now array(2, 4, 6, 8) 
unset($value); // break the reference with the last element 

?> 

난 그냥 $ 값 전에 &의 사용을 알아야합니다. 변수 주소를 가져 오기 전에 선언 된 변수를 보지 못했습니다.

왜 이런 말을했는지 도와주세요. 어떤 도움을 주시면 감사하겠습니다.

+0

http://www.php.net/manual/en /language.references.php –

+0

앰퍼샌드에 p를 추가해 주셔서 감사합니다. –

+0

앰버샌드없이 선언하지 않으면 문제가 있습니까? – user3220407

답변

3

의 foreach는 블록 앰퍼샌드가 배열 허용 참조로 각 값을 가져 오기 때문에 직접 조작 할 수 있습니다.

$arr = array(1,2,3,4); 
foreach($arr as $value) { 
    $value *= 2; 
} 

각 값은 즉시 폐기 한 다음,이 경우에는 2로 곱해진다. 이 이후


$arr = array(1,2,3,4); 
foreach($arr as &$value) { 
    $value *= 2; 
} 

가 참조로 전달되어 상기 어레이의 각 값은 실제로 변경된다 (따라서,이 $arrarray(2,4,6,8)된다)

0

앰퍼샌드는 PHP에 고유하지 않으며 실제로 다른 언어 (예 : C++)에서 사용됩니다. 변수를 참조로 전달 중임을 나타냅니다. 그냥 구글 "php pass by reference"이며, 이것에 대해 설명하는 데 필요한 모든 것이 거기에 있습니다. 일부 유용한 링크 :