2 回答
TA贡献1836条经验 获得超4个赞
您不能where在 PHP 数组上使用,您是否从您的csvToArray方法中返回了一个集合?如果这样做,则不应调用get()集合,因为这是查询构建器的代码。
所以我假设你从你的方法中只返回一个数组,然后你可以使用辅助函数来创建一个集合,所以你的代码可以变成以下内容:
$file = public_path('file/city_master.csv');
$customerArr = $this->csvToArray($file);
$result = collect($customerArr)->filter(function ($item) use ($query) {
// replace stristr with your choice of matching function
return false !== stristr($item->City_Code, $query);
});
if($result->count()) {
// success
}
return 'not in array';
我使用stristr()函数来模拟 LIKE 运算符。
TA贡献1806条经验 获得超8个赞
在循环本身中还有一个计数函数;每次循环循环时都会对 count($customerArr) 进行不必要的评估。将计数存储在一个变量中并改用它,这将改善您的执行时间。
$count = count($customerArr);
for ($i = 0; $i < $count; $i++)
{
//dd($customerArr );
$userreg = $customerArr->where('City_Code', 'like', '%'.$query.'%')->get();
}
- 2 回答
- 0 关注
- 154 浏览
添加回答
举报