Функция PHP для вызова файлов JSON - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь создать базовую функцию PHP для многократного вызова файлов json по всему приложению.Каждый раз, когда я хочу вызвать файл json, я использую:

<? $site = json_decode(file_get_contents('views/partials/site.json')); ?>

Затем я использую echo для использования данных из файла json следующим образом:

<? echo $site[0]->title; ?>

Но вместо повторения первой части яЯ хочу написать функцию в заголовке и вызвать ее там, где я хочу вызвать файл JSON.После этого я планировал использовать такую ​​функцию:

$site = jsonCall('site');

, используя приведенную ниже функцию;

function jsonCall($jsonurl){
    // this is one line code. no difference from 3 lines below-> $jsonCalled = json_decode(file_get_contents($homepage . 'views/partials/' . $jsonurl . '.json'));

    $url = $homepage . 'views/partials/' . $jsonurl . '.json';
    $data = file_get_contents($url); // put the contents of the file into a variable
    $jsonCalled = json_decode($data); // decode the JSON feed
    echo $jsonCalled;
  };

, но вместо того, что я хочу, я получил массив в ответ отсервер.Я думаю, что моя функция превращает файл JSON в массив, и поэтому я не могу вызвать его правильно.

Кто-нибудь знает, как решить эту простую проблему?покажи мне правильный способ написания этой функции, чтобы мой код мог выглядеть немного легче для чтения.Спасибо.

, изменив echo в функции с return и используя jsonCall('site')[0]->title; все работало нормально.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Сервер отвечает Array, потому что именно так PHP представляет массив, когда вы echo его используете.Ваша функция должна быть возвращать результат.

Попробуйте:

function jsonCall($jsonurl){
    // this is one line code. no difference from 3 lines below-> $jsonCalled = json_decode(file_get_contents($homepage . 'views/partials/' . $jsonurl . '.json'));

    $url = $homepage . 'views/partials/' . $jsonurl . '.json';
    $data = file_get_contents($url); // put the contents of the file into a variable
    $jsonCalled = json_decode($data); // decode the JSON feed
    // echo $jsonCalled;
    return $jsonCalled; // <- this should work
};
0 голосов
/ 18 октября 2018

Конечно, вы получаете массив.В противном случае $ site [0] (который является доступом к массиву при нулевом ключе) не сработал бы.

Из документов PHP (http://php.net/manual/en/function.json-decode.php):

Возвращает значение, закодированное в jsonв соответствующем типе PHP. Значения true, false и null возвращаются как TRUE, FALSE и NULL соответственно. NULL возвращается, если json не может быть декодирован или если закодированные данные глубже, чем предел рекурсии.

Ваш соответствующий тип PHP - массив.

Должно работать следующее:

jsonCall('site')[0]->title;

Поэтому я не вижу проблемы с вашим кодом?

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