2011-12-30 18 views
14

Actualmente tengo 2 matriz:Verificando 2 arrays tienen al menos 1 valor igual

array(1, 2, 3, 4); 
array(4, 5, 6, 7); 

¿Cómo puedo comprobar si hay al menos un valor igual en ambos? (El ejemplo anterior tiene 1 valor igual => 4, por lo que la función debe regresar verdadera).

Respuesta

30

array_intersect()

devuelve una matriz que contiene todos los valores de array1 que están presentes en todos los argumentos. Tenga en cuenta que las claves se conservan

$a = array(1, 2, 3, 4); 
$b = array(4, 5, 6, 7); 
$c = array_intersect($a, $b); 
if (count($c) > 0) { 
    var_dump($c); 
    //there is at least one equal value 
} 

se obtiene

array(1) { 
    [3]=> 
    int(4) 
} 
+0

http://es2.php.net/manual/en/function.array-intersect.php mira esto. – Rafee

+0

luego: 'if (count ($ c)> 0) doSomething();' – Alasdair

+2

Esto no es óptimo ya que se calcula la intersección completa, pero puede detenerse tan pronto como se encuentre una coincidencia. Sin embargo, con arreglos pequeños, la eficiencia de una función incorporada probablemente superará el problema de la complejidad teórica. Si tiene matrices grandes, será mejor que las clasifique y luego realice una poligonal quitando las más bajas de cada una hasta que ambas estén vacías o haya una coincidencia. –

Cuestiones relacionadas