Я хочу иметь возможность извлекать каждый сетевой план с ценами из этого GET API. Может кто-нибудь, пожалуйста, помогите мне?
Я хочу извлечь ПЛАН ДАННЫХ AIRTEL [dataPlan, продолжительность, тип, статус и цена для basic_user] в выбранный формат Option.
Я сделал это:
$url = "https://subandgain.com/api/databundles.php";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$obj = json_decode($response,true);
$suppliers = array();
$customers = array();
//echo "<pre>";
//print_r($obj);
foreach ($obj as $rkey => $resource){
if ($resource['NETWORK'] == 'AIRTEL'){
$customers[] = $resource;
} else if ($resource['NETWORK'] == 'MTN') {
$suppliers[] = $resource;
}
}
header('Content-Type: application/json');
$dataplan = json_encode($customers);
$objs = json_decode($dataplan,true);
echo "<pre>";
print_r($objs);






Переменная $objs возвращает json_decode. Замените на json_encode. Поэтому я внес коррективы, и PHP получил этот формат.
<?php
$url = "https://subandgain.com/api/databundles.php";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$obj = json_decode($response,true);
$customers = array();
$suppliers = array();
foreach ($obj as $rkey => $resource){
switch($resource['NETWORK']){
case "AIRTEL":
$customers[] = $resource;
break;
case "MTN":
$suppliers[] = $resource;
break;
}
}
header('Content-Type: application/json');
$dataplan = json_encode($customers);
$objs = json_encode($dataplan);
echo $objs;
Предполагая, что файл, в котором приведенный выше код называется api-plans.php, в переднем файле я использовал следующий код
<body>
<div class = "content"></div>
</body>
<script type = "text/javascript" src = "path_your_js/jquery.min.js"></script>
<script>
$(document).ready(function(){
$.ajax({
type: "post",
url: "api-plans.php",
async: true,
data: "",
beforeSend: function() {
},
success: function( response ) {
responseJson = JSON.parse(response);
var contentHTML = "";
var responseJsonNetWork = responseJson[0]['BUNDLE'];
$.each(responseJsonNetWork, function(i, item) {
contentHTML = contentHTML + "Data Plan: " + responseJsonNetWork[i]['dataPlan'] + "<br />";
contentHTML = contentHTML + "Duration: " + responseJsonNetWork[i]['duration'] + "<br />";
contentHTML = contentHTML + "Type: " + responseJsonNetWork[i]['type'] + "<br />";
contentHTML = contentHTML + "Status: " + responseJsonNetWork[i]['status'] + "<br />";
contentHTML = contentHTML + "Price (basic_user): " + responseJsonNetWork[i]['price'][0]['basic_user'] + "<br /><br />";
});
$(".content").html(contentHTML);
}
});
});
</script>
Надеюсь это поможет
Добро пожаловать в Stack Overflow. 1. Замена if на switch не требуется, если остальная часть кода такая же. 2. ОП ничего не спрашивал об AJAX, зачем его предоставлять?
Спасибо за прием. Что ж, я прочитал несколько статей на эту тему, и вывод следующий: в большинстве случаев переключение будет быстрее, чем если бы еще, потому что оно индексирует возможные результаты как константы, но это будет зависеть от языка и оптимизации, которую он использует. Что касается решения ajax, теги вопросов измеряют json, поэтому я решил собрать для него полный пример для тестирования.
switch может быть быстрее, но как это отвечает на вопрос?
Просто видение масштабируемости для проекта.
$url = "https://subandgain.com/api/databundles.php";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$obj = json_decode($response, true);
$suppliers = array();
$customers = array();
$temp = array();
$dataPlan = array();
$kPrice = array();
foreach ($obj as $rkey => $resource) {
$allPlans = array();
foreach ($resource['BUNDLE'] as $key) {
$dataPlan = array('dataPlan'=>$key['dataPlan'], 'duration'=>$key['duration'], 'type'=>$key['type'], 'status'=>$key['status']);
$kPrice = array();
foreach ($key['price'] as $keyPrice){
$kPrice = array('price_basic_user' => $keyPrice['basic_user']);
// $dataPlan['Price_basic_user'] = $keyPrice['basic_user']; // if you want [Price_basic_user] => 43 below [status] => Active
// $kPrice[] = array('price_basic_user' => $keyPrice['basic_user']); // if there are multiple basic_user price uncomment
}
$dataPlan['Price'] = $kPrice; // comment this if you want [Price_basic_user] => 43 below [status] => Active
$allPlans[] = $dataPlan;
}
$temp[$resource['NETWORK']] = $allPlans;
}
echo '<pre>';
print_r($temp);
Попробуй это!
Добро пожаловать в Stack Overflow, нужен ли здесь закомментированный код?
Спасибо, босс, это действительно работает 💯
Пожалуйста, отредактируйте вопрос и опишите ожидаемые и фактические результаты.