php strpos没有在数据库输出中找到结果

时间:2017-02-21 13:53:02

标签: php laravel-5.2

在我的laravel5控制器中,我从DB获取了一些行:

$order = Order::select('ordered_by')->where('column1','=','1')->get();

然后在我看来,我在哪里渲染一个表,

@foreach($users as $user)
     @if(strpos($order, $user->id) == true) match! @endif
@endforeach

我得到了结果

[{"ordered_by":"309"},{"ordered_by":"524"},{"ordered_by":"541"},{"ordered_by":"545"}]

为什么strpos不工作? (实际上它只为用户#546在表格中给出了“匹配!”) 试过这个:

@if (in_array($user->id,$order) ==true ) ok @endif 

但它显示错误in_array() expects parameter 2 to be array, object given

如何检查$user->id输出中是否存在$order

2 个答案:

答案 0 :(得分:0)

strpos - 在字符串中查找第一次出现的子字符串的位置

您可以使用 in_array

来获取它

尝试给定的脚本

$order = Order::select('ordered_by')->where('column1','=','1')->get()->toArray();

@foreach($users as $user)
     @if (in_array($user->id,$order)) ok @endif
@endforeach

答案 1 :(得分:0)

试试这段代码:

$order  = Order::where('column1','=','1')->get();
$orders = array_pluck(collect($order)->toArray(), 'ordered_by');

@foreach($users as $user)
    @if(in_array($user->id, $orders))
        ok
    @endif
@endforeach