搜索嵌套在laravel集合中的数组

时间:2017-06-27 18:39:03

标签: php laravel-5

我有一个api调用,返回一组这样的数据:

int main()
{
//A initalized Graph (not in form of adjaceny list
map<int, list<int> > graph{ { 3, {2} },
                            { 4, {5} },
                            { 5, {6} },
                            { 6, {7} },
                            { 7, {7} },
                            { 8, {6} }
                          };
//Default constrcutor takes care of making the initialzed map to adjaceny list
Graph g(graph);
g.addVertex(1);
g.addVertex(2);
g.addVertex(3);
g.addVertex(4);
g.addVertex(4);
g.addEdge(1, 2);
g.addEdge(2, 2);
g.addEdge(2, 3);
g.display();


return 0;
}

我把它放到一个变量中并从中创建了一个集合:

{
"id": 97423,
"visitor_id": 231505,
"domain_sessionidx": 1,
"session_start": "2017-06-01 04:40:07",
"session_end": "2017-06-01 05:22:45",
"session_length": 2558,
"count_pages": 11,
"count_pings": 7,
"created_at": null,
"updated_at": "2017-06-12 18:59:51",
"pages": [
    1829,
    1811,
    1829,
    1501,
    1829,
    1889,
    1762,
    1686,
    1825,
    1825,
    1825
]  },....

我遇到了问题,因为我只想访问数据中包含id 1762的数据中的记录。我一直在尝试:

$new_var = collect($result);

但我总是得到一个空洞的结果。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

我觉得您需要过滤$new_var集合,如果true属性包含您要查找的页面,则返回pages。例如:

$page = 1762;
$inPages = $new_var->filter(function($collection) use($page){ 
  return in_array($page, $collection->pages); 
});

$inPages现在应该是$new_var的子集,其1762数组中的条目包含pages,否则它将为空Collection。点击此处查看更多信息:https://laravel.com/docs/5.4/collections