简体   繁体   English

从JSON获取嵌套数组

[英]Getting nested array from JSON

This is my JSON. 是我的JSON。
Stored in variable named $onceBooking . 存储在名为$onceBooking变量中。

I want to get booking_slots from each booking . 我想从每个booking获取booking_slots

This is my code: 这是我的代码:

for ($i = 0; $i < count($onceBooking); $i++) {
    if (count($onceBooking[$i]->bookings) == 0) {
        $onceBooking[$i]->total_days = 0;
    } else {
        $onceBooking[$i]->total_days = count($onceBooking[$i]->bookings);
        $bookings = $onceBooking[$i]->bookings;
        for ($j = 0; $j < count($bookings); $j++) {
            return $bookings[$j]->booking_slots;
        }
    }
}

But it's returning nothing. 但是它什么也没返回。 Please tell me if I am wrong. 如果我错了,请告诉我。
Thanks. 谢谢。

$data = json_decode($onceBooking);

Then you can loop through data to grab your booking objects. 然后,您可以遍历数据以获取您的预订对象。

$result = ["total_days" => 0];

foreach($data as $instance) {
    $result["total_days"] += count($instance->bookings);
    $bookings = $instance->bookings;
    for($i = 0; $i < count($bookings); $i++) {
        return $bookings->booking_slots;
    }
}

-- EDIT: for returning total days & bookings. -编辑:用于返回总天数和预订。

$result = ["total_days" => 0, "bookings" => []];

foreach($data as $instance) {
    $result["total_days"] += count($instance->bookings);
    array_push($result["bookings"], $instance->$bookings);
}

return $result;

You have to modify the code a little bit because you are returning the first element's booking slot. 您必须稍微修改一下代码,因为您要返回第一个元素的预订位。

$data = json_decode($onceBooking);
$bookingSlots = array();
for ($i = 0; $i < count($onceBooking); $i++) {
    if (count($onceBooking[$i]->bookings) == 0) {
        $onceBooking[$i]->total_days = 0;
    } else {
        $onceBooking[$i]->total_days = count($onceBooking[$i]->bookings);
        $bookings = $onceBooking[$i]->bookings;
        for ($j = 0; $j < count($bookings); $j++) {
            if (!empty($bookings[$j])) {
                $bookingSlots[$bookings[$j]->id] = $bookings[$j]->booking_slots;
            }
        }
    }
}
return $bookingSlots;

Hope this helps. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM