Ver Mensaje Individual
  #7 (permalink)  
Antiguo 22/05/2014, 06:41
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Necesito eliminar lo que coinda en dos arrays

Ojo manual

Cita:
array_intersect handles duplicate items in arrays differently. If there are duplicates in the first array, all matching duplicates will be returned. If there are duplicates in any of the subsequent arrays they will not be returned.

<?php
array_intersect(array(1,2,2),array(1,2,3)); //=> array(1,2,2)
array_intersect(array(1,2,3),array(1,2,2)); //=> array(1,2)
?>
Luego deberías eliminar el valor del array intersección para evitar que se eliminen las repeticiones.

$array1 = array( 2, 2, 3, 5, 7, 13);
$array2 = array( 2, 3, 3, 7, 11, 13);

$intersec = array_intersect($array1,$array2); //$intersec=array(2,2,3,7,13)

$key=0 => $val=2 => $array1 = array( 2, 3, 5, 7, 13); $array2 = array(3, 3, 7, 11, 13); $intersec=array(3,7,13)
$key=1 => $val=2 => $array1 = array( 2, 3, 5, 7, 13); $array2 = array(3, 3, 7, 11, 13); $intersec=array(3,7,13)
$key=2 => $val=3 => $array1 = array( 2, 5, 7, 13); $array2 = array(3, 7, 11, 13); $intersec=array(7,13)
$key=3 => $val=5 => $array1 = array( 2, 5, 7, 13); $array2 = array(3, 7, 11, 13); $intersec=array(7,13)
$key=4 => $val=7 => $array1 = array( 2, 5, 13); $array2 = array(3, 11, 13); $intersec=array(13)
$key=5 => $val=13 => $array1 = array( 2, 5); $array2 = array(3, 11); $intersec=array()


$array1 = array( 2, 5);
$array2 = array(3, 11);


Código PHP:
Ver original
  1. <?php
  2.  
  3. $array1 = array( 2, 2, 3, 5, 7, 13);
  4. $array2 = array( 2, 3, 3, 7, 11, 13);
  5.  
  6. $intersec = array_intersect($array1,$array2);
  7.  
  8. foreach ($array1 as $key=>$val){
  9.     if(in_array($val,$intersec)){
  10.         unset($array1[$key]);
  11.         unset($array2[array_search($val,$array2)]);
  12.         while (array_search($val,$intersec)!==false){
  13.                unset($intersec[array_search($val,$intersec)]);
  14.         }
  15.         echo "Eliminando $val ..<br/>";
  16.     }
  17. }
  18. echo "<pre>";
  19. print_r($array1);
  20. echo "<br />";
  21. print_r($array2);
  22. echo "</pre>";

(Hecho al vuelo)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 22/05/2014 a las 07:15