2013-07-21 4 views
0

PHP에서 두 가지 유형의 foreach를 사용할 수 있습니다. 루프 항목을 반복하지 않지만내 PHP foreach 코드가 제대로 작동하지 않습니다.

$p2 = array('copier' => "Copier & Multipurpose", 
    'inkjet' => "Inkjet Printer",    
    'laser' => "Laser Printer",    
    'photo' => "Photographic Paper"); 

echo "p2 element: " . $p2['inkjet'] . "<br>"; 

foreach ($p2 as $item => $desc)   
{           
    echo "$item -> $desc <br />"; 
} 

echo "<br />"; 

while (list($item, $desc) = each($p2))    
{ 
    echo "$item -> $desc <br />"; 
} 

번째 : 여기

코드이다. 왜?

+0

예상되는 출력은 무엇입니까? 무엇을 얻고 있습니까? 디버깅 phazes 함께 무엇을 했습니까? –

+0

나는 두 번 "복사기 -> 복사기 및 다목적 잉크젯 -> 잉크젯 프린터"레이저 -> 레이저 프린터 사진 -> 사진 용지 "두 번 기대하고있다"하지만 내가 한 번 얻을 ... 나는 이것을 디버깅하는 방법을 몰라. .. 내가 foreach 중 하나 또는 그 중 하나를 넣을 때 각각 잘 작동합니다. –

답변

2

첫 번째 foreach()이 완료된 후 $ p2의 내부 "현재 위치"표시기는 배열의 끝 부분에 있습니다. reset() 포인터가 필요하므로 while() 루프가 처음부터 다시 시작됩니다. 예 : 코드가 다른 방법으로 주위 있었다, 그래서 만약

foreach($p2 as $item => $desc) { 
    .... 
} 
reset($p2); // <--you need this 
while(list(...) = ...) { 
... 
} 

foreach() foreach는 암시 적으로 당신을 위해 때마다 당신이 재설정을 수행합니다() 배열 (while 루프는 다음 foreach)는,이 문제가되지 않습니다.

+0

Super! 그건 완벽하게 작동합니다! :) 고마워요, 9 분 안에 답을 받아 들일 수있게되어서 나중에 올 것이고 그것을 클릭 할 것입니다! 매우 감사합니다 :) –

관련 문제