首页 > 解决方案 > PHP数组如何检查其他数组中是否存在所有数组值

问题描述

我有这样的数组:

$array1 = [1,2,3]; 

$array2 = [3,2,1]; 
$array3 = [2,1,3]; 
$array4 = [2,1,3]; 
$array5 = [1,1,1]; 
$array6 = [3,3,2]; 
$array7 = [1,2,1];
$array8 = [8,9,2]; 

我想检查 array2 直到 array8 与 array1 的比较。它应该给我这样的预期回报:

$array2 = [3,2,1]; return 'match'
$array3 = [2,1,3]; return 'match'
$array4 = [2,3,1]; return 'match'
$array5 = [1,1,1]; return 'not match'
$array6 = [3,3,2]; return 'not match'
$array7 = [1,2,1]; return 'not match'
$array8 = [8,9,2]; return 'not match'

我尝试使用它进行比较,array_diff()但有时结果与我预期的不同,特别是如果在 array2 上有两个相同的值。

注意:array2 直到 array8 需要始终具有来自 array1 的所有 3 个值

标签: phparrays

解决方案


您只需要在比较它们之前对两个数组进行排序,例如

sort($array1);
for ($i = 2; $i <= 8; $i++) {
    sort(${"array$i"});
    echo "array $i: " . ($array1 == ${"array$i"} ? 'match' : 'no match') . "\n";
}

输出:

array 2: match 
array 3: match 
array 4: match 
array 5: no match 
array 6: no match 
array 7: no match 
array 8: no match

3v4l.org 上的演示


推荐阅读