2014-12-19 3 views
0

배열 키를 다차원 배열로 가져 오는 것은 흥미로운 상황입니다.PHP가 foreach에 다차원 배열의 키를 저장합니다

나는 foreach를 사용하여 배열 값을 얻는 방법을 알고 있지만 키 값을 가져 와서 데이터베이스에 삽입하는 방법을 알고있다 ??

//Array 
    $BookingInfo = array(
      "115"=>array(
       "date"=>array(
        "15/12/2014"=>array(//need to get the date but not in here 
         array(
          //need to get the date in here!! 
          "from"=>2, 
          "to"=>5, 
          "user"=>"Ella", 
          "userid"=>"b2111" 
           ), 
         array(
          "from"=>5, 
          "to"=>7, 
          "user"=>"Johnson", 
          "userid"=>"a2413" 
           ) 
         ), 
        "16/12/2014"=>array(
         array(
          "from"=>4, 
          "to"=>8, 
          "user"=>"Peter", 
          "userid"=>"g531" 
           ) 
         ), 
        "17/12/2014"=>array(
         array(
          "from"=>1, 
          "to"=>3, 
          "user"=>"Chris", 
          "userid"=>"h024" 
           ), 
         array(
          "from"=>3, 
          "to"=>6, 
          "user"=>"Jennifer", 
          "userid"=>"f314" 
           ) 
         ), 
        "20/12/2014"=>array(
         array(
          "from"=>1, 
          "to"=>5, 
          "user"=>"Raymond", 
          "username"=>"r362" 
           ) 
         ), 
        "21/12/2014"=>array(
         array(
          "from"=>1, 
          "to"=>6, 
          "user"=>"Amy", 
          "username"=>"a754" 
           ) 
         ), 
        "23/08/2014"=>array(
         array(
          "from"=>2, 
          "to"=>4, 
          "user"=>"Amy", 
          "userid"=>"m432" 
           ) 
         ) 
        ) 
       ) 
     ); 

foreach는 코드 : 여기

내 코드입니다

foreach($BookingInfo as $roomNumber => $value){ 
     foreach($value as $id => $val){ 
      foreach($val as $bookDate => $array){ 
       foreach($array as $key => $detail){ 
        foreach($detail as $period =>$info){ 
         //get the $bookDate here 
         //if I get the "$bookDate" here, it shows the result with repeating 3 times, how can I solve it?? 
        } 
       } 
      } 
     }     
    } 

그리고 나는 때문에 두 멤버 '예약의 "15/12/2014"2 번 싶어하고, "16/12/2014"1 번, 어떻게해야할까요? 도와 주셔서 감사합니다.

+0

감사합니다. Verhaeren. 세 번째 foreach에서 foreach ($ BookingInfo [$ roomNumber] [$ id]를 $ bookDate => $ array로 사용합니까 ?? 고맙습니다. –

+0

Verhaeren, 배열이 업데이트되었습니다. 고맙습니다. –

+1

@Verhaeren,''foreach ($ value as $ id => $ val) {'''를 사용하면 무엇이 문제가됩니까? 제안보다 훨씬 쉽게 읽을 수 있습니다. 그리고이 배열은 배열에서 읽기만 제공한다면 동등합니다. 어레이 수정이 걱정된다면 참조로 할당하는 것이 훨씬 깔끔합니다. 즉, 첫 번째 foreach를''foreach ($ bookingInfo as $ roomNumber => & $ value) {''' 그러나 나는 그것이이 특별한 유스 케이스의 요구 사항이라고 생각하지 않는다. – lucas

답변

1

그것은 쉬운 그냥 두 번째 안쪽의 루프에서, 세부 배열에 bookDate을 추가 아마 :

foreach($BookingInfo as $roomNumber => $value){ 
    foreach($value as $id => $val){ 
     foreach($val as $bookDate => $array){ 
      foreach($array as $key => $detail){ 
       $detail['bookDate'] = $bookDate; 
       foreach($detail as $detailkey =>$detailval){ 
        print "$detailkey => $detailval\n"; 
       } 
       print "***\n"; 
      } 
     } 
    }     
} 

(그냥 당신이 사용하는 키는 무엇이든 있는지 확인이되지 세부 배열에있을 수 있습니다 하나입니다 이미 또는 당신은 약간 혼란을 일으킬지도 모르다).

출력

+0

감사합니다 lucas,하지만 왜 결과가 var_dump ($ detail [ "bookDate"])를 사용하여 5 번 반복되는 문제가 있습니까 ?? 또한 함수로 배열을 수집 할 필요가 있지만 각 값의 5 배 ...... 어떻게 해결할 수 또는 foreach 외부에서 함수를 호출해야합니까? 고마워, 루카스. –

+0

어디에서'''var_dump ($ detail [ "bookDate"]))'''를 넣고 있습니까? 그것은 가장 안쪽 루프에 있다면, 그것은 각 세부 사항에 대해 한 번 인쇄 될 것입니다. – lucas

관련 문제