Как я могу фильтровать и перебирать массив в PHP

Я хочу иметь возможность извлекать каждый сетевой план с ценами из этого 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);

Пожалуйста, отредактируйте вопрос и опишите ожидаемые и фактические результаты.

A.L 20.07.2023 17:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
1
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Переменная $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, зачем его предоставлять?

A.L 20.07.2023 17:00

Спасибо за прием. Что ж, я прочитал несколько статей на эту тему, и вывод следующий: в большинстве случаев переключение будет быстрее, чем если бы еще, потому что оно индексирует возможные результаты как константы, но это будет зависеть от языка и оптимизации, которую он использует. Что касается решения ajax, теги вопросов измеряют json, поэтому я решил собрать для него полный пример для тестирования.

Heliton Afonso Gonçalves 20.07.2023 17:12
switch может быть быстрее, но как это отвечает на вопрос?
A.L 20.07.2023 17:18

Просто видение масштабируемости для проекта.

Heliton Afonso Gonçalves 20.07.2023 17:39
Ответ принят как подходящий
$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, нужен ли здесь закомментированный код?

A.L 20.07.2023 16:58

Спасибо, босс, это действительно работает 💯

Clubz Friendship 20.07.2023 18:38

Другие вопросы по теме