2010-02-19 3 views
0
foreach(func() as $item)... 

위의 내용은 func()을 한 번만 호출하지만 그 이유는 무엇입니까? 정확히 어떻게됩니까?PHP에서 foreach가 어떻게 실행됩니까?

+0

당신은 어떤 코드 예제에이 있습니까 보여 주다? 실제 코드를 통해 우리는 더 많은 것을 도와 줄 수 있고 더 나은 대답을 줄 수 있습니다. –

답변

2

foreachwhile, for 또는 do … while과 같이 각 반복의 전후에 테스트 된 조건의 제어 구조가 아닙니다. 대신 배열을 사용하여 내부적으로 복사본을 만들고 반복합니다. 평가 때

foreach ($arr as $val) { /* … */ } 

또는 배열을 돌려 또 다른 표현으로 :

배열은 하나의 변수 (가장 많이 사용되는 변형)를 통해 전달 될 수

foreach (array('foo','bar') as $val) { /* … */ } 

function f() { return array('foo','bar'); } 
foreach (f() as $val) { /* … */ } 
+0

구조체가 아닙니다. 무엇입니까? – user198729

+0

http://www.php.net/foreach –

+0

@ user198729 : 제어 구조가 아니라고 말하지 않았습니다. 나는 모든 반복에서 테스트 된 조건을 가진 제어 구조가 아니라고 말했습니다. – Gumbo

1

함수를 두 번 이상 호출 할 필요가 없습니다. 반복 할 수있는 배열을 반환해야합니다.

7

foreach는 배열을 허용합니다. 근본적으로 func()를 한 번 호출하고 결과 배열을 foreach 구조체에 전달합니다.이 구조체는 루프를 반복 할 수 있습니다.

+0

증명해 주시겠습니까? – user198729

+2

'foreach' 루프를 평가할 때 분명하다고 생각합니다 –

+1

'func()'에서 호출하는 함수에 에코 또는 로그를 추가하는 것을 증명합니다 – thetaiko

관련 문제