如何从Laravel 5中的数组变量中提取数组项?

时间:2016-02-25 10:47:22

标签: php json laravel-5

我是laravel的新手,现在正在使用Laravel 5.2版。

我有这组数组:

    {
        "id": 2,
        "title": 'sample',
        "question_index": 1,
        "question": "Hope you could help me buddy.",
        "data": [
                    {
                        "id": 1,
                        "answer": 'yes',
                    }
                ]
    }

使用以下雄辩查询创建数组:

$exam_data = $this->template->where('id', $id)
                            ->with('data')
                            ->get();

现在我想使用Laravel 5检索该数组中的'data'数组。

我尝试了以下代码,但无济于事......

$user_data = $exam_data->data;

$user_data = $exam_data['data'];

$user_data = $exam_data->get('data');

虽然我可以使用它来解决它:

$user_data = $exam_data->pluck('data');

有这个结果(我不知道为什么,但我对此不满意):

[
    [
        {
            "id": 1,
            "answer": 'yes',
        }
    ]
]

我可以使用任何方法或方法来检索'数据'数组吗?

喜欢例如:

$user_data = $exam_data->data;

以及如何访问“回答”字段?

$user_data = $exam_data->data->answer;
Is this possible?

感谢任何意见或建议。谢谢!

1 个答案:

答案 0 :(得分:0)

    public static function login_checks($uname,$password)
     {
        $check = DB::table('customer_login')
        ->where('username','=',$uname)
        ->where('password','=',$password)->get();


      if($check)
       {
           //Session::put(['customer_id'=>'value']);
        Session::put('customer_id', $check[0]->customer_id);
        Session::put('username', $check[0]->username);
        return 1;
      }
    else
    {
        return 0;
    }
    }

返回{<1}}个m 多条记录,类似于:

$exam_data = $this->template->where('id', $id)
                            ->with('data')
                            ->get();

这就是您无法直接从Collection访问“数据”的原因,而这正是Collection [ 0 => Collection, 1 => Collection, ] 为您所做的事情。

$exam_data的作用与:

相同
->pluck()

如果你pluck()得到了你想要的东西。

但是,如果您希望使用单个记录,则可以使用$filtered = []; foreach ($exam_data as $exam) { $filtered[] = $exam->data; } 代替dd($filtered),这会返回单个集合,您可以在其中访问数据关系:

->first()