Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: 1mpuls0 en 10 Marzo 2014, 20:28 PM

Título: Comparar dos arrays
Publicado por: 1mpuls0 en 10 Marzo 2014, 20:28 PM
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
Título: Re: Comparar dos arrays
Publicado por: #!drvy en 11 Marzo 2014, 22:18 PM
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
Título: Re: Comparar dos arrays
Publicado por: engel lex en 11 Marzo 2014, 22:36 PM
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
Título: Re: Comparar dos arrays
Publicado por: 1mpuls0 en 12 Marzo 2014, 16:32 PM
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.