2014-02-19 4 views
3

이 배열 함수에서 우리는 호텔 세부 정보를 얻고 싶습니다. 값을 얻으려면 다음 코드를 사용했습니다. 그 코드에서 나는 적절한 결과를 얻지 못한다; 일부 호텔은 가격을 표시하지 않습니다. 출력도 제공했습니다.다차원 배열은 각 PHP를 사용하여 값을 얻습니다

Array 
(
    [TestMode] => true 
    [HotelAvailability] => Array 
     (
      [0] => Array 
       (
        [Hotel] => Array 
         (
          [Id] => 87649 
          [Name] => Asmali 
          [Region] => Array 
           (
            [Id] => 21303 
            [Name] => Old City 
           ) 

          [Type] => Hotel 
          [Stars] => 3 
          [Rank] => 1 
         ) 

        [Result] => Array 
         (
          [0] => Array 
           (
            [QuoteId] => 12297840-763 
            [Room] => Array 
             (
              [RoomType] => Array 
               (
                [Code] => 1103598 
                [Text] => Double Economy 
               ) 

              [MealType] => Array 
               (
                [Code] => 1000018 
                [Text] => Bed and breakfast 
               ) 

              [SellingPrice] => Array 
               (
                [Currency] => INR 
                [Amount] => 2094.87 
                [Estimated] => false 
                [Converted] => false 
               ) 

              [Guests] => Array 
               (
                [Adult] => Array 
                 (
                  [0] => Array 
                   (
                    [Id] => -452103032 
                    [Forename] => Array 
                     (
                     ) 

                    [Surname] => Array 
                     (
                     ) 

                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 1047.44 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                  [1] => Array 
                   (
                    [Id] => -452103033 
                    [Forename] => Array 
                     (
                     ) 

                    [Surname] => Array 
                     (
                     ) 

                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 1047.43 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                 ) 

               ) 

              [Confirmation] => allocation 
             ) 

           ) 

          [1] => Array 
           (
            [QuoteId] => 12297840-764 
            [Room] => Array 
             (
              [RoomType] => Array 
               (
                [Code] => 1002196 
                [Text] => Double Standard 
               ) 

              [MealType] => Array 
               (
                [Code] => 1000018 
                [Text] => Bed and breakfast 
               ) 

              [SellingPrice] => Array 
               (
                [Currency] => INR 
                [Amount] => 2993.22 
                [Estimated] => false 
                [Converted] => false 
               ) 

              [Guests] => Array 
               (
                [Adult] => Array 
                 (
                  [0] => Array 
                   (
                    [Id] => -452103034 
                    [Forename] => Array 
                     (
                     ) 

                    [Surname] => Array 
                     (
                     ) 

                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 1496.61 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                  [1] => Array 
                   (
                    [Id] => -452103035 
                    [Forename] => Array 
                     (
                     ) 

                    [Surname] => Array 
                     (
                     ) 

                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 1496.61 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                 ) 

               ) 

              [Confirmation] => allocation 
             ) 

           ) 

          [2] => Array 
           (
            [QuoteId] => 12297840-765 
            [Room] => Array 
             (
              [RoomType] => Array 
               (
                [Code] => 1002210 
                [Text] => Double Deluxe 
               ) 

              [MealType] => Array 
               (
                [Code] => 1000018 
                [Text] => Bed and breakfast 
               ) 

              [SellingPrice] => Array 
               (
                [Currency] => INR 
                [Amount] => 4190.37 
                [Estimated] => false 
                [Converted] => false 
               ) 

              [Guests] => Array 
               (
                [Adult] => Array 
                 (
                  [0] => Array 
                   (
                    [Id] => -452103036 
                    [Forename] => Array 
                     (
                     ) 

                    [Surname] => Array 
                     (
                     ) 

                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 2095.18 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                  [1] => Array 
                   (
                    [Id] => -452103037 
                    [Forename] => Array 
                     (
                     ) 

                    [Surname] => Array 
                     (
                     ) 

                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 2095.19 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                 ) 

               ) 

              [Confirmation] => allocation 
             ) 

           ) 

          [3] => Array 
           (
            [QuoteId] => 12297840-329 
            [Room] => Array 
             (
              [RoomType] => Array 
               (
                [Code] => 1286415 
                [Text] => Twin (Standard Twin) 
               ) 

              [MealType] => Array 
               (
                [Code] => 1000030 
                [Text] => Full Breakfast 
               ) 

              [SellingPrice] => Array 
               (
                [Currency] => INR 
                [Amount] => 5384.70 
                [Estimated] => false 
                [Converted] => false 
               ) 

              [Guests] => Array 
               (
                [Adult] => Array 
                 (
                  [0] => Array 
                   (
                    [Id] => -113025469 
                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 2692.35 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                  [1] => Array 
                   (
                    [Id] => -113025470 
                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 2692.35 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                 ) 

               ) 

              [Confirmation] => allocation 
             ) 

           ) 

          [4] => Array 
           (
            [QuoteId] => 12297840-348 
            [Room] => Array 
             (
              [RoomType] => Array 
               (
                [Code] => 1832194 
                [Text] => Double (Standard Twin) 
               ) 

              [MealType] => Array 
               (
                [Code] => 1000030 
                [Text] => Full Breakfast 
               ) 

              [SellingPrice] => Array 
               (
                [Currency] => INR 
                [Amount] => 5384.70 
                [Estimated] => false 
                [Converted] => false 
               ) 

              [Guests] => Array 
               (
                [Adult] => Array 
                 (
                  [0] => Array 
                   (
                    [Id] => -113025507 
                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 2692.35 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                  [1] => Array 
                   (
                    [Id] => -113025508 
                    [SellingPrice] => Array 
                     (
                      [Currency] => INR 
                      [Amount] => 2692.35 
                      [Estimated] => false 
                      [Converted] => false 
                     ) 

                   ) 

                 ) 

               ) 

              [Confirmation] => allocation 
             ) 

           ) 

         ) 

       ) 

      [1] => Array 
       (
        [Hotel] => Array 
         (
          [Id] => 1712021 
          [Name] => May Hotel 
          [Region] => Array 
           (
            [Id] => 21303 
            [Name] => Old City 
           ) 

          [Type] => Hotel 
          [Stars] => 4 
          [Rank] => 1 
         ) 

        [Result] => Array 
         (
          [QuoteId] => 12297840-899 
          [Room] => Array 
           (
            [RoomType] => Array 
             (
              [Code] => 1002196 
              [Text] => Double Standard 
             ) 

            [MealType] => Array 
             (
              [Code] => 1000018 
              [Text] => Bed and breakfast 
             ) 

            [SellingPrice] => Array 
             (
              [Currency] => INR 
              [Amount] => 2217.18 
              [Estimated] => false 
              [Converted] => false 
             ) 

            [Guests] => Array 
             (
              [Adult] => Array 
               (
                [0] => Array 
                 (
                  [Id] => -452103440 
                  [Forename] => Array 
                   (
                   ) 

                  [Surname] => Array 
                   (
                   ) 

                  [SellingPrice] => Array 
                   (
                    [Currency] => INR 
                    [Amount] => 1108.59 
                    [Estimated] => false 
                    [Converted] => false 
                   ) 

                 ) 

                [1] => Array 
                 (
                  [Id] => -452103441 
                  [Forename] => Array 
                   (
                   ) 

                  [Surname] => Array 
                   (
                   ) 

                  [SellingPrice] => Array 
                   (
                    [Currency] => INR 
                    [Amount] => 1108.59 
                    [Estimated] => false 
                    [Converted] => false 
                   ) 

                 ) 

               ) 

             ) 

            [Confirmation] => allocation 
           ) 

         ) 

       ) 

출력 :

87649 - Asmali: Old City 3 
1712021 - May Hotel: Old City 4 INR 2217.18 

내 코드 : 당신 CANN 당신이 사용할 수있는 첫 번째 항목에 관한 세부 사항을해야하는 경우 Result 둘 이상의 부분 배열을 참조로

foreach($array_data['HotelAvailability'] as $hotel) { 
     $id = $hotel['Hotel']['Id']; 
     $name = $hotel['Hotel']['Name']; 
     $region = $hotel['Hotel']['Region']['Name']; 
     $stars = $hotel['Hotel']['Stars']; 
     $price = $hotel['Result']['Room']['SellingPrice']['Currency'] . ' ' . $hotel['Result']['Room']['SellingPrice']['Amount'] ; 

     echo "$id - $name: $region $stars $price<br>\n"; 
    } 

답변

1

그것의 색인 0

$price = $hotel['Result'][0]['Room']['SellingPrice']['Currency'] . ' ' . $hotel['Result'][0]['Room']['SellingPrice']['Amount'] ; 

당신은, 당신이 필요로하는 모든 결과 배열을 달리 할 수 ​​있습니다 루프 던져 Result 하위 배열을 인덱스 [0]을 변경하고

이 결과 배열이 멀티입니다 당신은 인덱스 누락
foreach($array_data['HotelAvailability'] as $hotel) 
{ 
    $id = $hotel['Hotel']['Id']; 
    $name = $hotel['Hotel']['Name']; 
    $region = $hotel['Hotel']['Region']['Name']; 
    $stars = $hotel['Hotel']['Stars']; 

    foreach($hotel['Result'] as $result) 
    { 
     echo $result['Room']['SellingPrice']['Currency'] . ' ' . $result['Room']['SellingPrice']['Amount']; 
    } 
} 
+0

를 가져 내가이 코드를 사용하는 경우, 내가 오류 받고 있어요 - 치명적인 오류 : 배열로 오프셋 (offset) 문자열을 사용할 수 없습니다. 여러 가격 호텔이 표시되지만 하나의 객실 유형 만 표시되는 경우 가격 오류가 표시됩니다. 이 문제를 해결하십시오 – Abiram

+0

내 두 번째 솔루션을 사용해 보셨습니까? 첫 번째 루프 안에 배치해야합니다. – Fabio

+0

두 번째 옵션 만 시도합니다. 하지만 출력을 얻을. 이 출력에는 여러 가격 호텔이 표시됩니다. 단일 가격 호텔이 표시되지 않고 오류가 발생합니다. - 치명적 오류 : 배열로 문자열 오프셋을 사용할 수 없습니다. – Abiram

0

에서 당신이 그들에 대해 필요한 모든 정보를 검색 할 수 있습니다 차원도.

$hotel['Result'][0]['Room']['SellingPrice']['Currency']; 
$hotel['Result'][0]['Room']['SellingPrice']['Amount']; 
+0

복수 가격 이용 가능. 그래서 난 단지 루프 기능이 필요해. 하지만 위의 루프 기능이 작동하지만 일부 오류가 있습니다 - 치명적인 오류 : 문자열 오프셋을 배열로 사용할 수 없습니다. 여러 가격 호텔은 표시되지만 단일 가격 호텔은 표시되지 않습니다. 내가 뭘하는지 – Abiram

+0

사용하기 전에 확인하십시오. is_array()는 price ... etc와 같은 세부 정보가 있음을 의미합니다. ! is_array()는 문자열/빈이므로 수단은 가격이 없습니다. 기본 하나 설정, 아무것도 없음 –

1
foreach($array_data['HotelAvailability'] as $hotel) { 
    $id = $hotel['Hotel']['Id']; 
    $name = $hotel['Hotel']['Name']; 
    $region = $hotel['Hotel']['Region']['Name']; 
    $stars = $hotel['Hotel']['Stars']; 
    $price = $hotel['Result']['Room']['SellingPrice']['Currency'] . ' ' . $hotel['Result']['Room']['SellingPrice']['Amount'] ; 

여러 가격이

if (is_array($hotel['Result'][0])) 
    { 



    foreach($hotel['Result'] as $result) 
    { 


       $price1 = $result['Room']['SellingPrice']['Currency'] . ' ' . $result['Room']['SellingPrice']['Amount']; 

       echo "$price1 "; 



    } 

    } 
+0

당신은 당신의 자신의 대답을 받아 들일 수 있기를 바랍니다. 다른 사람에게도 투표 할 수 있기를 바랍니다. :) –