Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/03/2013, 00:25
Avatar de JorM
JorM
 
Fecha de Ingreso: diciembre-2012
Ubicación: Argentina
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Problema diferencia entre arrays

Aca te dejo un codigo que arme, que selecciona los comunes y no comunes y los muestra.

Código PHP:
Ver original
  1. <?php
  2. $xm_explode     = array("1","2","3","4","5"); //arr1
  3. $xm_explode_2   = array("1","2","3"); //arr2
  4.  
  5. //Cantidad Valores
  6. $arr1 = count($xm_explode)-1;
  7. $arr2 = count($xm_explode_2)-1;
  8.  
  9. //Donde se guardaran los valores comunes y no comunes
  10. $arrComunes = array();
  11. $arrNocomunes = array();
  12.  
  13. //Separacion de valores en los casos que uno de los dos array sea mayor que el otro
  14. if($arr1 <= $arr2){
  15.     $i = 0;
  16.     foreach ($xm_explode as $value){
  17.         if($value == $xm_explode_2[$i]){
  18.             $arrComunes[] = $value;
  19.         }else{
  20.             $arrNocomunes[] = $value;
  21.             $arrNocomunes[] = $xm_explode_2[$i];
  22.         }
  23.         $i++;
  24.     }
  25.     if($i < $arr2){
  26.         while($i <= $arr2){
  27.             $arrNocomunes[] = $xm_explode_2[$i];
  28.             $i++;  
  29.         }
  30.     }
  31. }else{
  32.     $i = 0;
  33.     foreach ($xm_explode_2 as $value){
  34.         if($value == $xm_explode[$i]){
  35.             $arrComunes[] = $value;
  36.         }else{
  37.             $arrNocomunes[] = $value;
  38.             $arrNocomunes[] = $$xm_explode[$i];
  39.         }
  40.         $i++;
  41.     }
  42.     if($i < $arr1){
  43.         while($i <= $arr1){
  44.             $arrNocomunes[] = $xm_explode[$i];
  45.             $i++;  
  46.         }
  47.     }
  48. }
  49.  
  50. //Mostrar Resultados
  51. echo 'Array Comunes';
  52. echo '<pre><br>';
  53. var_dump($arrComunes);
  54. echo '</pre><br>';
  55.  
  56. echo 'Array No Comunes';
  57. echo '<pre><br>';
  58. var_dump($arrNocomunes);
  59. echo '</pre><br>';
  60. ?>

El código tiene una particularidad, que supongamos que tenes los siguientes valores

Array 1 = 1 , 2 , 3 , 4 , 5 , 6 , 7
Array 2 = 1 , 2 , 3 , 5 , 4 , 6 , 7

Te va a mostrar:

Valores Comunes: 1,2,3,6,7
Valores no Comunes: 4,5,5,4

Porque sucede esto?

Porque el script los va chequeando por PARES, tendrías que pensar alguna forma de modificarlo para que no suceda eso.

Te doy la idea, intenta resolver dicha cuestión. lo dejo en tus manos.
De ultima si no te sale, decime y veo como lo podemos solucionar.

Saludo!