从 PHP Laravel 中的嵌套 JSON 数组中获取值


Get the values from a nested JSON array in PHP Laravel

所以我有一段代码,我已经用了一段时间了。

这是我拥有的代码

<?php
namespace App'Http'Controllers;
use Illuminate'Database'Eloquent'Model;
use Illuminate'Http'Request;
use App'Requests'SearchRequest;
use Vinelab'Http'Client as HttpClient;
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)
    {
        $searchPhrase = $request->input('search');
        $client = new HttpClient;
        $response = $client->get('https://www.reddit.com/search.json?q='. urldecode($searchPhrase) .'');
        $response = collect($response->json());
        $responseDecode = json_decode($response, true);
        $SearchResultsArray = $responseDecode;
        dd($SearchResultsArray);
    }
}

这将返回一个嵌套数组,如下所示

 array:2 [▼
  "kind" => "Listing"
  "data" => array:5 [▼
    "facets" => []
    "modhash" => ""
    "children" => array:25 [▼
      0 => array:2 [▼
        "kind" => "t3"
        "data" => array:52 [▶]
      ]
      1 => array:2 [▶]
      2 => array:2 [▶]
      3 => array:2 [▶]
      4 => array:2 [▶]
      5 => array:2 [▶]
      6 => array:2 [▶]
    ]
    "after" => "t3_38lgh9"
    "before" => null
  ]
]

我正在尝试访问每个标题属性

  1 => array:2 [▶]
  2 => array:2 [▶]
  3 => array:2 [▶]
  4 => array:2 [▶]
  5 => array:2 [▶]
  6 => array:2 [▶]
  7 => array:2 [▶]

我想将它们解析为可以发送到 Laravel 视图的数组。

每次我尝试访问时,我都会得到未定义的索引或偏移量,我不知道该怎么做。任何人都可以帮助我找到解决这个问题的方法吗?

编辑---------------------

我现在正在使用它,它运行良好

$allData=[];
        $counter = 1; 
        foreach ($posts as $post) {
            //foreach post get the data and store it in a database
            $allData[$counter]['title']= $post['data']['title'];
            $sentiment = SentimentAnalysis::decision($allData[$counter]['title']);
            $allData[$counter]['created']= $post['data']['created'];
            RedditPosts::create([
                    'title' => $allData[$counter]['title'], 
                    'created' => date($allData[$counter]['created']),
                    'sentiment' => $sentiment,
                    'search_identifier' => $search_id,
                    'search_phrase' => $searchPhrase
                    ]);
            $counter ++;
        }
基本上,

在你的情况下,你需要三个foreach来实现这样的嵌套数组

foreach($SearchResultsArray as $ThreeLevelArray){
foreach($ThreeLevelArray as $TwoLevelArray) {
foreach($TwoLevelArray as $OneevelArray) {
//your here son :)
}
}
}
$allData=[];
    $counter = 1; 
    foreach ($posts as $post) {
        //foreach post get the data and store it in a database
        $allData[$counter]['title']= $post['data']['title'];
        $sentiment = SentimentAnalysis::decision($allData[$counter]['title']);
        $allData[$counter]['created']= $post['data']['created'];
        RedditPosts::create([
                'title' => $allData[$counter]['title'], 
                'created' => date($allData[$counter]['created']),
                'sentiment' => $sentiment,
                'search_identifier' => $search_id,
                'search_phrase' => $searchPhrase
                ]);
        $counter ++;
    }