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

我需要查看另一个数组中是否存在一个数组中的任何值,并且数字是随机顺序的。我发现当值的顺序不完全相同时,似乎无法使用的解决方案。


我已经尝试过了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]]


幕布斯6054654
浏览 118回答 3
3回答

DIEA

要检查期望的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文档

Qyouu

您可以通过whereIn()在查询中使用来完全避免使用array_intersect 。$student = User::find($id);$studentLocations = $student->hospital()->pluck('id')->toArray();$result = Auth::user()->hospital()->whereIn('id',$studentLocations)->pluck('id')->toArray();

斯蒂芬大帝

我的原始帖子有一个无法解决的问题,我用基本术语进行了描述,然后使用实际代码进行了描述。$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);
打开App,查看更多内容
随时随地看视频慕课网APP