Доступ к массиву в Json ответ в PHP из ответа REST API от сообщества Invision - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь получить доступ к массиву «results» изнутри ответа Json на вызов REST API сообщества Invision. Я не уверен, как отфильтровать этот массив результатов из кода PHP, как показано ниже. Как только я отфильтровал его, я хочу отобразить его на экране, как в настоящее время отображается полный ответ. Приветствуется любая помощь!

PHP Код

<code><?php
    $communityUrl = 'https://website.net/invisioncommunity';
    $apiKey = 'apikey';
    $endpoint = '/core/members';

    $curl = curl_init( $communityUrl . 'api' . $endpoint );
    curl_setopt_array( $curl, array(
        CURLOPT_RETURNTRANSFER  => TRUE,
        CURLOPT_HTTPAUTH    => CURLAUTH_BASIC,
        CURLOPT_USERPWD     => "{$apiKey}:"
    ) );
    $response = curl_exec( $curl );
    $resArr = array();
    $resArr = json_decode($response);
    
    $resultsArr = cleanResponse($response);
    
    echo "<pre>"; print_r($resultsArr); echo "
"; function cleanResponse ($ arr) {$ element = $ arr ['results']; return $ element;}

Json (частичный) Ответ от вызова API

{
    "page": 1,
    "perPage": 25,
    "totalResults": 111,
    "totalPages": 5,
    "results": [
        {
            "id": 1,
            "name": "Demo",
            "title": null,
            "timeZone": "America\/New_York",
            "formattedName": "Demo<\/span>",
            "primaryGroup": {
                "id": 4,
                "name": "Demo",
                "formattedName": "Demo<\/span>"
            },
            "secondaryGroups": [
                {
                    "id": 15,
                    "name": "Root Admin (Do not edit!)",
                    "formattedName": "Root Admin (Do not edit!)"
                }
            ],
            "email": "demo@website.net",
            "joined": "2020-07-07T19:48:33Z",
            "registrationIpAddress": "",
            "warningPoints": 0,
            "reputationPoints": 6,
            "photoUrl": "",
            "photoUrlIsDefault": false,
            "coverPhotoUrl": "",
            "profileUrl": "https:\/\/www.website.net\/profile\/1-demo\/",
            "validating": false,
            "posts": 3,
            "lastActivity": "2020-07-14T20:01:21Z",
            "lastVisit": "2020-07-14T18:43:48Z",
            "lastPost": "2020-07-13T13:26:02Z",
            "profileViews": 1234,
            "birthday": "1\/2",
            "customFields": {
                "1": {
                    "name": "Personal Information",
                    "fields": {
                        "1": {
                            "name": "About Me",
                            "value": ""
                        },
                        "2": {
                            "name": "Discord",
                            "value": "Demo#0000"
                        },
                        "3": {
                            "name": "Steam Hex",
                            "value": null
                        }
                    }
                }
            }
        },
    ]
}

1 Ответ

1 голос
/ 15 июля 2020

Несколько небольших изменений в вашем коде должны решить вашу проблему:

  1. Чтобы получить ассоциативный массив, используйте true в качестве второго аргумента для json_decode()

$resArr = json_decode($response, true);

Использовать ассоциативный массив $resArr в качестве аргумента для функции cleanResponse:

$resultsArr = cleanResponse($resArr);

Теперь $resultsArr содержит подмассив results, который вы можете вывести, например, print_r()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...