#php #arrays #json
#php #массивы #json
Вопрос:
У меня есть возвращаемая строка json, подобная приведенной ниже. Я хочу извлечь список объектов политики отмены, таких как время отключения и возврат в процентах. Я пытался использовать for-loop, но это мне не помогло. Не могли бы вы, пожалуйста, помочь мне извлечь это.
Array (
[apiStatus] => Array ( [success] => 1 [message] => SUCCESS ) <br>
[apiAvailableBuses] => Array ( <br>
[0] => Array ( [droppingPoints] => [availableSeats] => 41 <br>[partialCancellationAllowed] => [arrivalTime] => 08:00 AM <br>
[cancellationPolicy] => [<br>
{"cutoffTime":"1","refundInPercentage":"10"},<br>
{"cutoffTime":"2","refundInPercentage":"50"},<br>
{"cutoffTime":"4","refundInPercentage":"90"}<br>
] <br>
[boardingPoints] => Array ( [0] => Array ( [time] => 09:00PM [location] => Ameerpet,|Jeans Corner 9687452130 [id] => 6 ) [1] => Array ( [time] => 09:15PM [location] => S.R Nagar,S.R Nagar [id] => 2224 ) [2] => Array ( [time] => 09:10PM [location] => Kondapur,Toyota Show room [id] => 2244 ) ) [operatorName] => Deepak Travels [departureTime] => 9:00 PM [mTicketAllowed] => [idProofRequired] => [serviceId] => 6622 [fare] => 800 [busType] => 2 1 Hi-Tech Non A/c [routeScheduleId] => 6622 [commPCT] => 0 [operatorId] => 213 [inventoryType] => 0 ) <br>
[1] => Array ( [droppingPoints] => [availableSeats] => 41 [partialCancellationAllowed] => [arrivalTime] => 07:00 AM <br>
[cancellationPolicy] => [<br>
{"cutoffTime":"1","refundInPercentage":"10"},<br>
{"cutoffTime":"2","refundInPercentage":"50"},<br>
{"cutoffTime":"4","refundInPercentage":"90"}<br>
] <br>
[boardingPoints] => Array ( [0] => Array ( [time] => 09:10PM [location] => Ameerpet,|Jeans Corner [id] => 6 ) [1] => Array ( [time] => 09:00PM [location] => S.R Nagar,S.R Nagar [id] => 2224 ) [2] => Array ( [time] => 08:30PM [location] => KUKATPALLY,JNTU [id] => 2230 ) ) [operatorName] => Dhanunjayabus [departureTime] => 9:00 PM [mTicketAllowed] => [idProofRequired] => [serviceId] => 6743 [fare] => 900 [busType] => VOLVO [routeScheduleId] => 6743 [commPCT] => 0 [operatorId] => 233 [inventoryType] => 0 )
)
)
Ответ №1:
Используйте foreach()
для этого вот так:
foreach ($your_response['apiAvailableBuses'] as $el) {
$cancellationPolicy[] = $el['cancellationPolicy'];
}
Комментарии:
1. Привет Rax — он выдает массив cancellationPolicy, можем ли мы также извлечь данные для времени отключения? поскольку я пытался, но получал ошибку
2. Да, вы можете. Вы можете сделать это следующим образом в качестве примера:
$cancellationPolicy[0]->cutoffTime
.3. Привет, Rax — я попробовал то же, что и вы, и он выдает ошибку типа «получить свойство не-объекта». я что-то упускаю?
4. foreach($someArray2[‘apiAvailableBuses’] как $s2) { $cancellationPolicy[] = $s2[‘cancellationPolicy’]; echo $cancellationPolicy[0]-> Время отключения.'<br>’; }
5. Привет, Ракс, можешь ли ты, пожалуйста, помочь мне в этом.
Ответ №2:
Попробуйте это:
foreach($data['apiStatus']['apiAvailableBuses'] as $item) {
foreach($item['cancellationPolicy'] as $key => $json) {
$jsonDecoded = json_decode($json, true);
// And you will have access to the data like this
// $jsonDecoded['cutoffTime'];
// $jsonDecoded['refundInPercentage'];
}
}
Ответ №3:
$response = json_decode($apiResponse);
$cancellationPolicies = [];
foreach ($response->apiAvailableBuses as $availableBus) {
$cancellationPolicies[] = $availableBus['cancellationPolicy'];
// if you want to display something you can simply do it like this;
echo $availableBus['cancellationPolicy']->cutoffTime;
}
Комментарии:
1. следовал тому же подходу, но получал ошибку ‘Fatal error: не удается использовать объект типа stdClass в качестве массива’ в строке (foreach ($someArray2[‘apiAvailableBuses’] как $availableBus) {)