1. 程式人生 > >php判斷一個數組是另一個數組的子集

php判斷一個數組是另一個數組的子集

需求
最少的時間複雜度判斷$a陣列是否是$b陣列的子集

// 快速的判斷$a陣列是否是$b陣列的子集
$a = array(135,138);
$b = array(135,138,137);

實現方法

這裡介紹三種方法,思路其實是相同的,差別在於實現的程式碼上

1.for迴圈遍歷

$flag = 1;   
foreach ($a as $va) {   
    if (in_array($va, $b)) {   
        continue;   
    }else {   
        $flag = 0;   
        break;   
    }   
}   
   
if ($flag) {   
    echo "Yes";   
}else {   
    echo "No";   
}
2.array_diff的使用;計算陣列的差集
array_diff(array1,array2,array3...);
返回值: 返回差集陣列,該陣列包括了所有在被比較的陣列(array1)中,但是不在任何其他引數陣列(array2 或 array3 等等)中的鍵值。
$c = array_diff($a, $b);   
print_r($c);   
$flag = empty($c)?1 : 0;   
   
if ($flag) {   
    echo "Yes";   
}else {   
    echo "No";   
}


3.array_intersect的使用;計算陣列的交集
array_intersect(array1,array2,array3...);
返回值: 返回交集陣列,該陣列包括了所有在被比較的陣列(array1)中,同時也在任何其他引數陣列(array2 或 array3 等等)中的鍵值。
if ($a == array_intersect($a, $b)) {   
    $flag = 1;   
}else {   
    $flag = 0;   
}   
   
if ($flag) {   
    echo "Yes";   
}else {   
    echo "No";   
}