@Deletron247

Как откинуть ненужные запросы в json?

Есть такой код
$json_tv_anime = json_decode($this->videocdn_get($data, 'anime-tv-series') , true);
$json_tv_show = json_decode($this->videocdn_get($data, 'show-tv-series') , true);
$json_tv_series = json_decode($this->videocdn_get($data, 'tv-series') , true);

if ($json_tv_anime['status'] == 'true') {
	$response = $json_tv_anime;
}
elseif ($json_tv_show['status'] == 'true') {
	$response = $json_tv_show;
}
elseif ($json_tv_series['status'] == 'true') {
	$response = $json_tv_series;
}
else {
	$response['status'] = 'false';
}

Я делаю 3 разных запроса в api чтобы узнать к какому типу принадлежит видео но в независимости от того вернул первый запрос ответ или нет он все равно сделает три запроса. как оптимизировать это чтобы он спросил у api это аниме или нет если да то 2 следующих обращения не делать если нет то опрашиваем api пока не получим нужные данные. вроде понятно обьяснил а там посмотрим
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
опрашиваем api пока не получим нужные данные
В вашей постановке уже есть большая часть ответа - формулировка "пока не" чётко указывает на необходимость использования цикла.

foreach (['anime-tv-series', 'show-tv-series', 'tv-series'] as $type) {
  $json = json_decode($this->videocdn_get($data, $type), true);

  if ($json['status'] == 'true') {
    return $json;
  }
}

return ['status' => 'false'];


Ну или то же самое, но без return:
$response = ['status' => 'false'];

foreach (['anime-tv-series', 'show-tv-series', 'tv-series'] as $type) {
  $json = json_decode($this->videocdn_get($data, $type), true);

  if ($json['status'] == 'true') {
    $response = $json;
    break;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
part_os
@part_os
Сложное в простом
сделайте return внутри условия ну и вызовы последовательно
elseif ($json_tv_series['status'] == 'true') {
  return $json_tv_series;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽