Laravel, преобразовать массив JSON в массив и получить только один объект из массива

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Vinelab\Http\Client as HttpClient;
use App\Requests\SearchRequest;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class SearchResults extends Controller
{
    public function index()
    {
        return view('results.search-results');
    }

    public function store(Requests\SearchRequest $request)
    {

        $search_phrase = $request->input('search');

        $client = new HttpClient;

        $response = $client->get('https://www.reddit.com/search.json?q='. $search_phrase .'');

        $responseArray = $response->json();

        dd($responseArray);

        return view('results.search-results');

    }
}  

Используя приведенный выше код, я делаю вызов API Reddit, используя этот HTTP-сервис.

https://github.com/Vinelab/http/tree/master

Ответ, который возвращается, дает мне массив большого количества данных, но я хочу получить только поле заголовка из этого и проанализировать его в массив Laravel, который можно отправить в представление, где я буду отображать заголовки в цикле foreach .

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

Есть ли способ в Laravel 5.2 преобразовать вывод этого массива JSON в пригодный для использования массив, который может быть компактным и отправленным в представление?


person Devin Gray    schedule 24.02.2016    source источник


Ответы (1)


Вы можете сделать это, чтобы преобразовать json в формат массива.

json_decode($response->content(), true);

и может получить доступ через это

$response[0]['title']

person Qazi    schedule 24.02.2016
comment
Я понимаю логику здесь, но получаю это исключение Вызов неопределенного метода Vinelab\Http\Response::first() - person Devin Gray; 24.02.2016
comment
Если я удалю первый, он вызовет вызов неопределенного метода Vinelab\Http\Response::toArray(), это напрямую связано с выполнением HTTP-вызова с переменной $client - person Devin Gray; 24.02.2016
comment
Я так понимаю, вы используете API, попробуйте $response[0]['title'] - person Qazi; 24.02.2016
comment
Невозможно использовать объект типа Vinelab\Http\Response, поскольку массив является ответом, будет ли это работать с массивом JSON? У меня есть массив в формате JSON, но теперь я просто хочу преобразовать его в обычный массив, который я могу сохранить в БД с помощью красноречивого - person Devin Gray; 24.02.2016
comment
попробуйте это, я уверен, что это преобразует ваш JSON в обычный массив, json_decode($response->json(), true); - person Qazi; 24.02.2016
comment
Понятно!! Спасибо, также $response-›json() должен быть $response-›content(), тогда он работает с декодированием JSON :D Ты, мой друг, легенда! Пожалуйста, отредактируйте свой ответ, и я приму его для дальнейшего обучения. - person Devin Gray; 24.02.2016
comment
когда я использовал json_decode($response-›content(), true); Вызов функции-члена pluck() для не-объекта - person Sachith Muhandiram; 23.06.2016
comment
@Sachith, это просто означает, что в $response или $response-›content() ничего нет - person Devin Gray; 23.06.2016