2012-09-18 3 views
1

저는 여러 부서의 다차원 배열을 가지고 있고 foreach 루프를 사용하여 루프를 돌리고 싶지만, 어떤 이유로 foreach 루프는 모든 반복을 통해 첫 번째 키의 값을 가져옵니다 .PHP foreach가 첫 번째 키의 값을 고집했습니다.

$departmentArray = 

Array 
(
    [0] => Array 
     (
      [dpt_id] => 5 
      [dpt_name] => Administration 
      [dpt_employees] => Array 
       (
       [0] => Array 
        (
         [started] => 2000-06-01 
         [stopped] => 9999-99-99 
         [empl_id] => 21 
        ) 

       [1] => Array 
        (
         [started] => 2000-06-01 
         [stopped] => 2010-01-01 
         [empl_id] => 23 
        ) 
      ) 
    ) 

    [1] => Array 
     (
      [dpt_id] => 6 
      [dpt_name] => Warehouse 
      [dpt_employees] => Array 
       (
       [0] => Array 
        (
         [started] => 2000-10-01 
         [stopped] => 2012-01-01 
         [empl_id] => 30 
        ) 

       [1] => Array 
        (
         [started] => 2007-10-17 
         [stopped] => 9999-99-99 
         [empl_id] => 197 
        ) 
      ) 
    ) 
) 

을 그리고 foreach 루프는 다음과 같습니다 :

배열은 다음과 같다, 왜 루프를

0 Administration 1 Administration. 

사람이 알고 있나요 :

foreach($departmentArray as $key => $value) { 

    print_r($key); 
    print_r($value['dpt_name']); 

} 

을 그리고이 인쇄 배열에서 앞으로 움직이지 않고 두 번째 반복 동안 키/인덱스 1에서 값 (창고)을 가져 옵니까? 어둠에

+4

아니요, * this * 코드는 인쇄하지 않습니다. 자신의 코드가 그것을 인쇄한다면, 당신은 다른 것을하고있다. 아마도 참조로 반복하고 값을 변경하는 것일까 요? – Jon

+0

답변 해 주셔서 감사합니다. 맞습니다. 이전에 코드에서 참조로 반복합니다. 여기서 동일한 이름을 사용합니다. 이제 살펴 보겠습니다. – acrmuui

답변

2

총 스터브 : 당신과 같이, 이전에 참조로 foreach 루프 $value를 사용한

는 :

foreach ($foo as &$value) { ... } 

foreach ($departmentArray as $key => $value) { ... } 

이 참조 공지 부작용이다. 첫 번째 루프 이후에 unset($value).

+0

어둠 속에서 찔러 줘서 고마워, 내가 옳다고 생각해. 앞에서 언급 한대로 코드를 반복한다. 중괄호 안의 첫 번째 루프에서 $ 값을 해제해야합니까? – acrmuui

+1

좋아, 내가 알아 냈어, 도와 줘서 고마워! – acrmuui

관련 문제