因此,我需要从Laravel中的对象数组中获取特定项目。
首先,我在这里进行选择:
public function example($userId)
{
$type = DB::table('users_type')
->select('type_a', 'type_b', 'type_c')
->where(function ($query) use ($userId)
{
$query->where('user_id', '=', $userId);
})
->get();
return $type;
}
好吧,我在(type_a
,type_b
,type_c
)对象数组中拥有所有记录,看起来像这样:
[
{
"type_a": 0,
"type_b": 0,
"type_c": 0
},
{
"type_a": 1,
"type_b": 1,
"type_c": 1
},
{
"type_a": 1,
"type_b": 0,
"type_c": 1
},
]
我在控制器做出这个代码:
//calling the function example
$type_ticket = example($user_id);
//get the types from the first register from the array
//of objects that I returned from the function example
$type_a = $type_ticket[0]->type_a;
$type_b = $type_ticket[0]->type_b;
$type_c = $type_ticket[0]->type_c;
现在,我只需要获取其中一个元组。
例如,其中一个(type_a = 1
,type_b = 0
,type_c = 1
)。
我该怎么做?
答案 0 :(得分:0)
您可以循环阵列,并比较针对子阵列的array_value。
foreach($arr as $key => $sub){
if(array_values($sub) == [1,0,1]){
$res[$key] = $sub;
}
}
var_dump($res);
输出
array(1) {
[2]=>
array(3) {
["type_a"]=>
int(1)
["type_b"]=>
int(0)
["type_c"]=>
int(1)
}
}
答案 1 :(得分:0)
您可以尝试使用收藏集https://laravel.com/docs/5.7/collections#method-where
类似:
//calling the function example
$type_ticket = example($user_id)->where('type_a', 1)->where('type_b', 0)->where('type_c', 1);
您的功能也可以稍微简化
public function example($userId)
{
return DB::table('users_type')
->select('type_a', 'type_b', 'type_c')
->whereUserId($userId)
->get();
}