我有以下数组:
$elements = collect([
['product_id' => 'prod-100', 'name' => 'Desk'],
['product_id' => 'prod-200', 'name' => 'Chair'],
]);
我需要按近似值进行过滤,但仅使用收集数据,例如:
$elements->where('name', 'LIKE', 'De%')->values()->all();
实际上,我可以过滤数据,但是使用常规过滤器(在其中),这对我不起作用,因为它会找到确切的巧合。因此,如果我使用普通过滤器,则必须说出要匹配的确切值:
$elements->where('name', 'Desk');
我如何使用“ Where LIKE”子句对数组数据进行查询?
答案 0 :(得分:1)
您可以在集合中使用filter
函数,并在关闭时使用preg_match
php函数检查其是否存在于name参数中,如下所示:
$name='de';
$elements->filter(function ($item) use($name){
return preg_match("/$name/",$item['name']);
});