求高效算法找
程序员文章站
2024-01-27 17:51:58
...
$a = array( 'A' => array(1,2,3,4,5,6), 'B' => array(1,7,8,9), 'C' => array(1,6,7,8,9),) $b = array( '2','4') 求高效算法找出 $b数组 属于数组 $a A、B、C的那一项的子集,注 $a,$b 数量不确定
回复讨论(解决方案)
$a = array( 'A' => array(1,2,3,4,5,6), 'B' => array(1,7,8,9), 'C' => array(1,6,7,8,9),); $b = array( '2','4');$r = array_filter($a, function($t) use ($b) { return array_intersect($b, $t) == $b;});print_r($r);
Array( [A] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 ))
foreach ($a as $key => $aa) { if (count($aa) == count(array_flip(array_merge($aa, $b)))) { echo $key; break; }}
不知道这个算不算高效
$a = array( 'A' => array(1,2,3,4,5,6), 'B' => array(1,7,8,9), 'C' => array(1,6,7,8,9),); $b = array( '2','4');$r = array_filter($a, function($t) use ($b) { return array_intersect($b, $t) == $b;});print_r($r);
Array( [A] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 ))牛比。。