为了账号安全,请及时绑定邮箱和手机立即绑定

以随机顺序比较PHP中的两个数组

以随机顺序比较PHP中的两个数组

PHP
幕布斯6054654 2021-05-14 15:11:28
我需要查看另一个数组中是否存在一个数组中的任何值,并且数字是随机顺序的。我发现当值的顺序不完全相同时,似乎无法使用的解决方案。我已经尝试过了array_intersect,但是如果我要查找的号码不是相同的顺序,这将不起作用。$array1 = [1,2];$array2 = [2,3];$result = array_intersect($array1, $array2);$result 返回false,但我希望它意识到两个数组中都存在2并返回true。我想这有一个简单的解决方案,但是找不到任何可行的方法。更新:这是完整的代码(使用PHP,Laravel):$student = User::find($id);$studentLocations = $student->hospital()->pluck('id');$preceptorLocations = Auth::user()->hospital()->pluck('id');$result = array_intersect($studentLocations, $preceptorLocations);如果返回每个结果:[2] // studentLocations[1,2] // preceptorLocations但是,使用上面的完整代码,我得到:"array_intersect(): Argument #1 is not an array"array($student->hospital()->pluck('id'))例如,如果我更改为它,则不会出现错误,也不会返回true,而当我仅返回结果时,它们是这样的:[[2]]
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

要检查期望的ID是否在您的数组中:


if(in_array($studentLocations, $preceptorLocations)){

    //Your code

}

in_array()函数检查数组中是否存在值。假设$ studentsLocations是一个整数。如果是数组


if (!array_diff($studentLocations, $preceptorLocations)) {

    //Your code

};

array_diff计算数组的差。


- - 更新 - -


您可以使用laravel intersect()方法来检查第二个集合中是否存在第一个集合的某些元素。在这种情况下,计数函数的返回值大于0。


if (count($studentLocations->intersect($preceptorLocations))>0) {

        //Your code here

Laravel 5.8 Collections文档


查看完整回答
反对 回复 2021-05-21
?
Qyouu

TA贡献1786条经验 获得超11个赞

您可以通过whereIn()在查询中使用来完全避免使用array_intersect 。


$student = User::find($id);

$studentLocations = $student->hospital()->pluck('id')->toArray();

$result = Auth::user()->hospital()->whereIn('id',$studentLocations)->pluck('id')->toArray();



查看完整回答
反对 回复 2021-05-21
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我的原始帖子有一个无法解决的问题,我用基本术语进行了描述,然后使用实际代码进行了描述。


$student = User::find($id);

$studentLocations = $student->hospital()->pluck('id');

$preceptorLocations = Auth::user()->hospital()->pluck('id');


$result = array_intersect($studentLocations, $preceptorLocations);

解决方案是在Laravel中pluck返回一个对象。通过将toArray()变量添加到末尾,它现在可以完美运行。


$student = User::find($id);

$studentLocations = $student->hospital()->pluck('id')->toArray();

$preceptorLocations = Auth::user()->hospital()->pluck('id')->toArray();


$result = array_intersect($studentLocations, $preceptorLocations);


查看完整回答
反对 回复 2021-05-21
  • 3 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信