在PHP中有没有比较多个数组更快的方法?

在PHP中有没有比较多个数组更快的方法?,php,laravel,optimization,Php,Laravel,Optimization,我在比较多个阵列时遇到了性能问题 我做的算法是: 我将首先通过foreach循环数组 foreach($branchs as$index=>$branch){ 如果(!$相同){ 继续; } //基本上,这$permissions将从数据库获取数据。 $permissions=$this->get() ->其中('user_id',$userId) ->其中('branch_id',$userBranchId) ->sortBy('permission\u id') ->拔毛(['permiss

我在比较多个阵列时遇到了性能问题

我做的算法是:

我将首先通过foreach循环数组

foreach($branchs as$index=>$branch){
如果(!$相同){
继续;
}
//基本上,这$permissions将从数据库获取数据。
$permissions=$this->get()
->其中('user_id',$userId)
->其中('branch_id',$userBranchId)
->sortBy('permission\u id')
->拔毛(['permission_id']);
//如果index=0,那么我将初始化临时变量(数组)$initial,否则我将比较两个变量(数组)
如果($index==0){
$initial=$permissions;
}否则{
如果($initial!=$permissions){
$idential=假;
}
}
}

所以为了比较多个数组,我只使用这个if条件和比较符号(=)。但我认为,若不在循环中查询数据库,可以使用array\u列将数组的分支导出到“userId”和“userBranchId”列
最后,使用“where”

构建查询。我同意@thaiha的观点,您可以将查询减少到一个,然后对数组进行比较。例如,在Mysql中,您可以执行以下操作

select * from `permissions` where (`user_id `, `branch_id `) in (('1', '2'), ('2', '4'));

然后,为了比较数组,您可以执行循环,或者使用php函数中的一个来比较数组,如array_diff is,您希望所有数组都匹配一组特定的权限。或者类似的东西。

而不是循环数组。我建议改为使用即时加载

分支模型

public function permissions(){
 return $this->hasMany('App\Permission', 'foreign_key', 'local_key');
}
在你的控制器里

Branch::with('permissions')->where($condition)->get();

阅读此处的文档:

这取决于原始数组的来源。可以在此时执行此处理,而不必在数组中循环并检查其中的详细信息。为了提高性能,尽可能减少数据库调用的数量通常会更快。最好的解决方案是删除它,因为它什么都不做。