Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardar en un tercer array valores que estén en el array1 pero no en el array2

Estas en el tema de Guardar en un tercer array valores que estén en el array1 pero no en el array2 en el foro de PHP en Foros del Web. Necesito ayuda, ya que me estoy volviendo loca y no se como sacar esto. El array $varTipoTraficoAno[] tienen los valores (1,2,3,4,5,6) y el array $varTipoTraficoMes[] ...
  #1 (permalink)  
Antiguo 16/05/2013, 02:05
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Guardar en un tercer array valores que estén en el array1 pero no en el array2

Necesito ayuda, ya que me estoy volviendo loca y no se como sacar esto.
El array $varTipoTraficoAno[] tienen los valores (1,2,3,4,5,6) y el array $varTipoTraficoMes[] tiene los valores (1,2,3,4,5). Quiero que en el array $noIgualVarTipoTraficoAno[] se me guarden los valores que hay en el array $varTipoTraficoAno[] pero que no estan en el array $varTipoTraficoMes[]. Si lo hago de esta forma que pongo abajo en el array $noIgualVarTipoTraficoAno[] se me guardan los valores que son iguales.

¿Como puedo hacer para que se me guarden los que no son iguales?

Código vb.net:
Ver original
  1. $b=6;
  2. $f=5;
  3. $kont=0;
  4. $y=0;
  5. For($l=0;$l<=($b-1);$l++){
  6.    For($g=0;$g<=($f-1);$g++){
  7.     If ($varTipoTraficoAno[$l] != $varTipoTraficoMes[$g]){
  8.         $kont = $kont + 1;
  9.     }
  10.    }
  11.    If ($kont == ($f-1)){
  12.     $noIgualVarTipoTraficoAno[$y]=$varTipoTraficoAno[$l];
  13.     echo $noIgualVarTipoTraficoAno[$y]."<br>";
  14.     $y = $y + 1;
  15.    }
  16.    $kont = 0;
  17. }

__________________
Gracias por todo;

Un saludo
  #2 (permalink)  
Antiguo 16/05/2013, 02:10
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

o.O porque no de vez en cuando checas en el manual si existe una función que satisfaga tus necesidades en vez de reinventar la rueda....

Código PHP:
Ver original
  1. <?php
  2. $varTipoTraficoAno = array(); //tu array con x items...
  3. $varTipoTraficoMes = array();
  4.  
  5. $itemsUnicos = array_diff($varTipoTraficoAno,$varTipoTraficoMes);
  6.  
  7. echo '<pre>';
  8. print_r($itemsUnicos);
  9. echo '</pre>';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 16/05/2013, 02:32
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

Cita:
Iniciado por Nemutagk Ver Mensaje
o.O porque no de vez en cuando checas en el manual si existe una función que satisfaga tus necesidades en vez de reinventar la rueda....

Código PHP:
Ver original
  1. <?php
  2. $varTipoTraficoAno = array(); //tu array con x items...
  3. $varTipoTraficoMes = array();
  4.  
  5. $itemsUnicos = array_diff($varTipoTraficoAno,$varTipoTraficoMes);
  6.  
  7. echo '<pre>';
  8. print_r($itemsUnicos);
  9. echo '</pre>';
La verdad es que hace nada empece a programar en php y no sabia que existían esas funciones y tampoco es que tenga un manual de php.

Si asi me funciona pero lo que pasa es que ahora tengo lo siguiente en el array $varTipoTraficoAno:
Código txt:
Ver original
  1. COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 6,38 )
  2. COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 9,79 )
  3. DATOS INTERNET
  4. INTERNO CORPORATIVO
  5. INTERNO MOVILES
  6. MENSAJES MOVISTAR
  7. MENSAJES OPERADORES NACIONALES
  8. RESTO DE TRAFICO NACIONAL
  9. TRAFICO NAC.OTROS OPER.MOVILES
  10. TRAFICO NACIONAL A FIJOS

Y esto en el array $varTipoTraficoMes:
Código txt:
Ver original
  1. COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 6,38 )
  2. DATOS INTERNET
  3. INTERNO CORPORATIVO
  4. INTERNO MOVILES
  5. MENSAJES MOVISTAR
  6. MENSAJES OPERADORES NACIONALES
  7. RESTO DE TRAFICO NACIONAL
  8. TRAFICO NAC.OTROS OPER.MOVILES
  9. TRAFICO NACIONAL A FIJOS

Cuando hago esto que me dices "$itemsUnicos = array_diff($varTipoTraficoAno,$varTipoTraficoMes); " y muestro lo que hay en el array "$itmesUnicos" y muestra lo siguiente:
Código txt:
Ver original
  1. Array
  2. (
  3.     [1] => COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 9,79 )
  4.     [10] => MENSAJES OPER. NAC.ITINER.
  5.     [12] => RECIBIDAS EN ITINERANCIA
  6. )
De donde saca la 10 y la 12?
Despues de eso, cuento la longitud del array y me devuelve 3, visualizo lo que hay en el array $itemsUnicos y solo contiene "COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 9,79 )".
__________________
Gracias por todo;

Un saludo

Última edición por maialenlopez; 16/05/2013 a las 02:41
  #4 (permalink)  
Antiguo 16/05/2013, 02:47
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

Cita:
...Quiero que en el array $noIgualVarTipoTraficoAno[] se me guarden los valores que hay en el array $varTipoTraficoAno[] pero que no estan en el array $varTipoTraficoMes[]...
Probablemente sea por la hora (aquí es de madrugada >.<) en fin, entendí que solo querías los items que no se repitieran, bueno, en tu caso sí será necesario más código...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $arrayA = array();
  4. $arrayB = array();
  5.  
  6. $unicos = array();
  7.  
  8. foreach($arrayA as $item) {
  9.      if (!in_array($item,$arrayB) {
  10.           $unicos[] = $item;
  11.      }
  12. }
  13.  
  14. echo '<pre>';
  15. print_r($unicos);
  16. echo '</pre>';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 16/05/2013, 02:59
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

Cita:
Iniciado por Nemutagk Ver Mensaje
Probablemente sea por la hora (aquí es de madrugada >.<) en fin, entendí que solo querías los items que no se repitieran, bueno, en tu caso sí será necesario más código...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $arrayA = array();
  4. $arrayB = array();
  5.  
  6. $unicos = array();
  7.  
  8. foreach($arrayA as $item) {
  9.      if (!in_array($item,$arrayB) {
  10.           $unicos[] = $item;
  11.      }
  12. }
  13.  
  14. echo '<pre>';
  15. print_r($unicos);
  16. echo '</pre>';
ahora me muestra esto:
Código txt:
Ver original
  1. Array
  2. (
  3.     [0] => COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 9,79 )
  4.     [1] => MENSAJES OPER. NAC.ITINER.
  5.     [2] => RECIBIDAS EN ITINERANCIA
  6. )
Pero como ves los "MENSAJES OPER. NAC.ITINER." y "RECIBIDAS EN ITINERANCIA" no estan en el primer array.

Porque puede ser esto
__________________
Gracias por todo;

Un saludo

Última edición por maialenlopez; 16/05/2013 a las 03:04
  #6 (permalink)  
Antiguo 16/05/2013, 03:13
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

Ninguno de los 2 código agregan items al array final, el segundo código que te di básicamente recorre cada item del arrayA y ve si ese mismo valor existe en el arrayB, si no existe agrega el valor a un nuevo array (arrayC o en este caso unicos), si dices que X item no existe en el arrayA es que algo estas haciendo mal, tal vez estas comparando el array equivocado, ya que no hay forma que se generen valores de la nada, muestra tu código COMPLETO para ver que es lo que estas haciendo....

Se me olvidaba, depura los array antes de compararlos....

Código PHP:
Ver original
  1. <?php
  2.  
  3. $arrayA = array();
  4. $arrayB = array();
  5.  
  6. echo '<p>Depurando...</p>';
  7.  
  8. echo '<pre>';
  9. print_r($arrayA);
  10. print_r($arrayB);
  11. echo '</pre>';
  12.  
  13. $unicos = array();
  14.  
  15. foreach($arrayA as $item) {
  16.      if (!in_array($item,$arrayB) {
  17.           $unicos[] = $item;
  18.      }
  19. }
  20.  
  21. echo '<pre>';
  22. print_r($unicos);
  23. echo '</pre>';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 16/05/2013, 03:28
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

Cita:
Iniciado por Nemutagk Ver Mensaje
Ninguno de los 2 código agregan items al array final, el segundo código que te di básicamente recorre cada item del arrayA y ve si ese mismo valor existe en el arrayB, si no existe agrega el valor a un nuevo array (arrayC o en este caso unicos), si dices que X item no existe en el arrayA es que algo estas haciendo mal, tal vez estas comparando el array equivocado, ya que no hay forma que se generen valores de la nada, muestra tu código COMPLETO para ver que es lo que estas haciendo....

Se me olvidaba, depura los array antes de compararlos....

Código PHP:
Ver original
  1. <?php
  2.  
  3. $arrayA = array();
  4. $arrayB = array();
  5.  
  6. echo '<p>Depurando...</p>';
  7.  
  8. echo '<pre>';
  9. print_r($arrayA);
  10. print_r($arrayB);
  11. echo '</pre>';
  12.  
  13. $unicos = array();
  14.  
  15. foreach($arrayA as $item) {
  16.      if (!in_array($item,$arrayB) {
  17.           $unicos[] = $item;
  18.      }
  19. }
  20.  
  21. echo '<pre>';
  22. print_r($unicos);
  23. echo '</pre>';

Hola,

He depurado los arrays antes de compararlos y esto es lo que tengo con lo que me has puesto tu:

echo '<pre>';
print_r($arrayA);
print_r($arrayB);
echo '</pre>';

Código txt:
Ver original
  1. Array
  2. (
  3.     [0] => COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 6,38 )
  4.     [1] => DATOS INTERNET
  5.     [2] => INTERNO CORPORATIVO
  6.     [3] => INTERNO MOVILES
  7.     [4] => MENSAJES MOVISTAR
  8.     [5] => MENSAJES OPERADORES NACIONALES
  9.     [6] => RESTO DE TRAFICO NACIONAL
  10.     [7] => TRAFICO NAC.OTROS OPER.MOVILES
  11.     [8] => TRAFICO NACIONAL A FIJOS
  12.     [9] => TRAFICO NAC.OTROS OPER.MOVILES
  13.     [10] => TRAFICO NACIONAL A FIJOS
  14.     [11] => RESTO DE TRAFICO NACIONAL
  15.     [12] => TRAFICO NAC.OTROS OPER.MOVILES
  16.     [13] => TRAFICO NACIONAL A FIJOS
  17.     [14] => SERVICIOS ESPECIALES ROAMING
  18.     [15] => TRAFICO NAC.OTROS OPER.MOVILES
  19.     [16] => TRAFICO NACIONAL A FIJOS
  20. )

Y lo que me devuelve el array $unicos es esto:

Código txt:
Ver original
  1. Array
  2. (
  3.     [0] => COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 9,79 )
  4.     [1] => MENSAJES OPER. NAC.ITINER.
  5.     [2] => RECIBIDAS EN ITINERANCIA
  6. )
__________________
Gracias por todo;

Un saludo
  #8 (permalink)  
Antiguo 16/05/2013, 03:43
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

En el código que publicas solo se ve 1 array y no los dos, aparte, donde esta el código PHP? así no te puedo ayudar, pues solo estaré adivinando que es lo que haces...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 16/05/2013, 03:54
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

Cita:
Iniciado por Nemutagk Ver Mensaje
En el código que publicas solo se ve 1 array y no los dos, aparte, donde esta el código PHP? así no te puedo ayudar, pues solo estaré adivinando que es lo que haces...

Yo creo que ha habido problemas con los servidores que estoy trabajando y me devolvía mas cosas en el array 3 porque acabo de probar y funciona.

Voy a hacer otra prueba mas.

Gracias primero por decirme como se depuran los arrays que no tenia ni idea
__________________
Gracias por todo;

Un saludo
  #10 (permalink)  
Antiguo 16/05/2013, 04:02
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Guardar en un tercer array valores que estén en el array1 pero no en el ar

Ya está lo he conseguido tal y como me has dicho tu, haciendo esto:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $arrayA = array();
  4. $arrayB = array();
  5.  
  6. echo '<p>Depurando...</p>';
  7.  
  8. echo '<pre>';
  9. print_r($arrayA);
  10. print_r($arrayB);
  11. echo '</pre>';
  12.  
  13. $unicos = array();
  14.  
  15. foreach($arrayA as $item) {
  16.      if (!in_array($item,$arrayB) {
  17.           $unicos[] = $item;
  18.      }
  19. }
  20.  
  21. echo '<pre>';
  22. print_r($unicos);
  23. echo '</pre>';

Habria problemas con los servidores o algo por que parece ser que no me guardaba los cambio o no se. AHORA EL RESULTADO ES ESTE, JUSTO LO QUE NECESITO.

Código txt:
Ver original
  1. Array1
  2. (
  3.     [0] => COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 6,38 )
  4.     [1] => COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 9,79 )
  5.     [2] => DATOS INTERNET
  6.     [3] => INTERNO CORPORATIVO
  7.     [4] => INTERNO MOVILES
  8.     [5] => MENSAJES MOVISTAR
  9.     [6] => MENSAJES OPERADORES NACIONALES
  10.     [7] => RESTO DE TRAFICO NACIONAL
  11.     [8] => TRAFICO NAC.OTROS OPER.MOVILES
  12.     [9] => TRAFICO NACIONAL A FIJOS
  13. )
  14.  
  15. ---------------
  16. Array2
  17. (
  18.     [0] => COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 6,38 )
  19.     [1] => DATOS INTERNET
  20.     [2] => INTERNO CORPORATIVO
  21.     [3] => INTERNO MOVILES
  22.     [4] => MENSAJES MOVISTAR
  23.     [5] => MENSAJES OPERADORES NACIONALES
  24.     [6] => RESTO DE TRAFICO NACIONAL
  25.     [7] => TRAFICO NAC.OTROS OPER.MOVILES
  26.     [8] => TRAFICO NACIONAL A FIJOS
  27. )
  28.  
  29. ---------------
  30. Array3
  31. (
  32.     [0] => COMPROMISO INTERNET EN EL MOVIL PREMIUM ( 12,50 - 9,79 )
  33. )

Muchas gracias, Nemutagk.
:aplau so:
__________________
Gracias por todo;

Un saludo

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:24.