php配列の分析は別の配列のサブセットです



Analyzing Php Array Is Subset Another Array



要求する
最小時間計算量は、配列が$ a $ b配列のサブセットであるかどうかによって決まります。

//配列が$サブセット$ b配列であるかどうかをすばやく判断する
$ a = array(135,138)
$ b = array(135,138,137)



実装

ここに3つの方法があります。実際、考え方は同じです。違いはコードの実装にあります。



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' } $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...) Return Value: returns the set difference array, which includes all the compared array (array1) in, but not any other parameter array (array2 array3 or the like) of the key. $c = array_diff($a, $b) print_r($c) $flag = empty($c)?1 : 0 if ($flag) { echo 'Yes' }else { echo 'No' } $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...) Return Value: returns the intersection array, which includes all keys in the array to be compared (array1) while also any other parameter array (array2 array3 or the like) in the. if ($a == array_intersect($a, $b)) { $flag = 1 }else { $flag = 0 } if ($flag) { echo 'Yes' }else { echo 'No' } if ($a == array_intersect($a, $b)) { $flag = 1 }else { $flag = 0 } if ($flag) { echo 'Yes' }else { echo 'No' }