Comparar dos arrays

Iniciado por 1mpuls0, 10 Marzo 2014, 20:28 PM

0 Miembros y 1 Visitante están viendo este tema.

1mpuls0

Hola.

Tengo que comparar dos arrays.

El primero tiene la siguiente estructura al utilizar print_r($a)


Array ( [0] => Clue [1] => segpopular [2] => acredita [3] => aguapota [4] => aguaredmun )


El segundo es resultado de una consulta sql, pero guardado en un array.



Array ( [0] => Array ( [COLUMN_NAME] => Clue ) [1] => Array ( [COLUMN_NAME] => recetas ) [2] => Array ( [COLUMN_NAME] => acredita ) [3] => Array ( [COLUMN_NAME] => 35067 ) )


Quiero conocer la intesección de los value, por ejemplo en este caso quiero obtener en otro arreglo los valores: Clue y acredita.

Estoy intentando con este método, pero al ser un array bidimensional supongo que no funciona igual
Código (php-brief) [Seleccionar]

$array3 = array_intersect_key($array1, $array2);


Alguna idea? :)

Edito.

Olvide mencionar que voy a comparar 170 valores (array1) contra 200 valores (array2) aproximadamente y esto se hará 5100 veces

Gracias
abc

#!drvy

Lo unico que se me ocurre es reducir el segundo array y hacerlo como el primero..

Código (php) [Seleccionar]
<?php

function reduceArray($input){
foreach($input as $index=>$arr){$input[$index] = $arr['COLUMN_NAME'];}
return $input;
}

$array = array('Clue','segpopular','acredita','aguapota','aguaredmun');
$array2 = array(
array('COLUMN_NAME'=>'recetas'),
array('COLUMN_NAME'=>'acredita'),
array('COLUMN_NAME'=>'35067')
);

print_r(array_intersect_key($arrayreduceArray($array2)));
// Array ( [0] => Clue [1] => segpopular [2] => acredita ) 

?>


El caso es que eso implica recorrerlo 2 veces... seguramente php tenga alguna función para esto xD


Saludos

engel lex

que tal si usas algo asi

Código (php) [Seleccionar]

array3;
foreach(array1 as subarray){
  if(array_seach(subarray[COLUMN_NAME],array2)
    array3[]=subarray[COLUMN_NAME];


mas o menos esa es la idea, si tiene errores sorry, estoy en cel :p
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

1mpuls0

Gracias por responder.

#!drvy tú método es precisamente lo tengo ahora. Solo que pensé que habría un método nativo para hacerlo más práctico.

engelx Probaré tu método para ver cual lo realiza en menos tiempo.


Saludos.
abc