Вы можете использовать вспомогательную функцию Laravel, например, data_get (), даже функции коллекций, такие как get()
, pluck()
и т. Д., Для работы с Arrayable Items.
Давайте используем data_get()
в качестве примера, чтобы получить все MealPlan
, используя этот путь RoomTypeDetails->Rooms->Room->*-> MealPlan
:
$data = [
"HotelName" => "AL MANZIL DOWNTOWN DUBAI",
"PreferredStatus" => "A",
"PropertyType" => "City Hotel",
"StarRating" => "4",
"GeoLocation" => [],
"Chain" => "ADDRESS HOTELS",
"HotelCode" => "32-4560",
"HotelDescr" => [],
"Zone" => "Downtown",
"RoomTypeDetails" => [
"Rooms" => [
"Room" => [
0 => [
"RoomNo" => "1",
"RoomType" => "DELUXE ROOM",
"RoomTypeCode" => "14264",
"RoomStatus" => "OK",
"BlackOut" => [],
"CurrCode" => "AED",
"ContractTokenId" => "191032",
"RoomConfigurationId" => "1",
"DynamicInventory" => "N",
"ContractLabel" => [],
"Refundable" => "Y",
"PackageYN" => "N",
"MealPlan" => "ROOM ONLY",
"MealPlanCode" => "1380",
"RoomNumber" => "1",
"BuyRate" => [],
"CommissionSellCharges" => [],
"TaxSellCharges" => [],
"Rate" => "3430.4",
"RoomStatusDetails" => [],
"SupplementDetails" => [
"Supplement" => [
"Id" => "403880",
"FromDate" => "20191015",
"ToDate" => "20191018",
"Qty" => "1",
"Rate" => "127",
"CommissionSellCharges" => [],
"TaxSellCharges" => [],
"BuyRate" => [],
"Name" => "CHILD SUPPLEMENT",
"OptionalYN" => "N",
"ValidOn" => "YYYYYYY",
"Nights" => "4",
]
],
"DiscountDetails" => [
"Discount" => [
"DiscountName" => "EARLY BIRD OFFER 2019-2020 20 % DISCOUNT",
"DiscountType" => "Price Reduction Discount",
"DiscountNotes" => "<html><body><p><strong>EARLY BIRD OFFER 2019 - 2020 | 20% DISCOUNT <br /><br />Terms and Conditions:</strong> <br />- Applicable for all booking received 6 ",
"DiscountTypeCode" => "0",
"TotalDiscountRate" => "857.6",
"CommissionSellCharges" => [],
"TaxSellCharges" => [],
"TotalDiscountBuyRate" => [],
],
],
"PromotionalContract" => "N",
], 1 => [
"RoomNo" => "1",
"RoomType" => "DELUXE ROOM",
"RoomTypeCode" => "14264",
"RoomStatus" => "OK",
"BlackOut" => [],
"CurrCode" => "AED",
"ContractTokenId" => "191032",
"RoomConfigurationId" => "1",
"DynamicInventory" => "N",
"ContractLabel" => [],
"Refundable" => "Y",
"PackageYN" => "N",
"MealPlan" => "BED AND BREAKFAST",
"MealPlanCode" => "1376",
"RoomNumber" => "1",
"BuyRate" => [],
"CommissionSellCharges" => [],
"TaxSellCharges" => [],
"Rate" => "4019.2",
"RoomStatusDetails" => [],
"SupplementDetails" => [],
"DiscountDetails" => [],
"PromotionalContract" => "N",
],
]
]
]
];
return data_get($data,'RoomTypeDetails.Rooms.Room.*.MealPlan');
Это даст вам:
[
"ROOM ONLY",
"BED AND BREAKFAST"
]
Обновление:
Подобно тому, как @simonecosci упоминал, чтобы получить индивидуальное значение, используя нотацию «точка», вы можете использовать array_get , чтобы у вас было:
array_get($data,'RoomTypeDetails.Rooms.Room.1.MealPlan')
Преимущество использования этого метода помимо исключения foreach
состоит в том, что он возвращает null
, когда свойство / индекс не существует в массиве.