foreach($foo as &$bar) {
//do something
}
이것은 PHP의 foreach 루프 구문입니다. 일반적으로 $foo
& $bar
은 다른 변수이지만 내 질문은 동일한 변수가 될 수 있습니까? 나는 PHP가 나를 허용 할 것인지 묻는다. 그런 코드를 작성하는 것이 가능한지 아닌지. 이것은 루프 내부의 변수를 수정한다는 것을 알고 있으며 걱정하지 않습니다.
foreach($foo as &$bar) {
//do something
}
이것은 PHP의 foreach 루프 구문입니다. 일반적으로 $foo
& $bar
은 다른 변수이지만 내 질문은 동일한 변수가 될 수 있습니까? 나는 PHP가 나를 허용 할 것인지 묻는다. 그런 코드를 작성하는 것이 가능한지 아닌지. 이것은 루프 내부의 변수를 수정한다는 것을 알고 있으며 걱정하지 않습니다.
:
루프가 실제로 원래$x
배열의 모든 3 개 값을 실행하지만,하는 것으로
php > $x = array(1,2,3);
php > foreach($x as $x) { echo $x; }
123
php > var_dump($x);
int(3)
루프가 종료, $x
후, 이제 단순한 int입니다. 더 이상 배열이 아닙니다.
as $x
이 일반 일반 $ x 변수 또는 &$x
참조 인 경우에도 마찬가지입니다.
아니요, 변수가 같을 수 없습니다. $foo
은 배열이고 &$bar
은 해당 배열의 요소에 대한 참조가됩니다. 루프의에 대해 이라고하는 이유가 있습니다. 이는 배열의 요소를 루핑하기 때문에 (이 경우 참조를 사용하기 때문에) 직접 수정해야하기 때문입니다.
예, 작동합니다. foreach
루프가 시작되면 배열 내용의 스냅 샷을 만듭니다. 그런 다음 반복 변수가 해당 스냅 샷의 요소에 연속적으로 지정됩니다.
$foo = array(1, 2, 3);
foreach ($foo as &$foo) {
echo "foreach: $foo\n";
}
echo "vardump: ";
var_dump($foo);
출력 : 당신은 "같은 변수 인"무엇을 의미합니까
foreach: 1
foreach: 2
foreach: 3
vardump: int(3)
? 'foreach ($ foo as $ foo)'처럼? 실제로 해봤습니까? – Mike
예, 그렇습니다. 제대로 작동하는 것 같습니다. 네가 할 수있을 지 궁금해서. 게다가 PyroCMS를 사용했기 때문에 PyroCMS를 사용했을 수도 있습니다. – trysis