php判斷一個數組是另一個數組的子集
阿新 • • 發佈:2019-02-18
需求
最少的時間複雜度判斷$a陣列是否是$b陣列的子集
// 快速的判斷$a陣列是否是$b陣列的子集
$a = array(135,138);
$b = array(135,138,137);
實現方法
這裡介紹三種方法,思路其實是相同的,差別在於實現的程式碼上
1.for迴圈遍歷
2.array_diff的使用;計算陣列的差集$flag = 1; foreach ($a as $va) { if (in_array($va, $b)) { continue; }else { $flag = 0; break; } } if ($flag) { echo "Yes"; }else { echo "No"; }
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";
}