Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/08/2011, 13:39
Avatar de andresdzphp
andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Unir valores de un Array

Bueno no se si te sirva este código, pero me divertí mucho haciendo esto, si le puedes sacar algún provecho bien y sino también. Lo que hace es combinar los array repetidos y suma sus stock. Sino te sirve tal vez a alguién le servirá en un futuro por eso lo dejo. Saludos

Código PHP:
Ver original
  1. <?php
  2.  
  3. $codigo[0] = '666666666666X';
  4. $texto[0] = 'Carro';
  5. $stock[0] = 348;
  6.  
  7. $codigo[1] = '12345678910111X';
  8. $texto[1] = 'Balón';
  9. $stock[1] = 245;
  10.  
  11. $codigo[2] = '12345678910111G';
  12. $texto[2] = 'Balón';
  13. $stock[2] = 132;
  14.  
  15. $codigo[3] = '999999999999H';
  16. $texto[3] = 'Ejemplo';
  17. $stock[3] = 99;
  18.  
  19. $codigo[4] = '999999999999C';
  20. $texto[4] = 'Ejemplo';
  21. $stock[4] = 765;
  22.  
  23. $codigo[5] = '222222222222J';
  24. $texto[5] = 'Ejemplo 2';
  25. $stock[5] = 123;
  26.  
  27. $codigo[6] = '222222222222C';
  28. $texto[6] = 'Ejemplo 2';
  29. $stock[6] = 22;
  30.  
  31. $arr = array(); //Array auxiliar para sacar repetidos
  32. $nc = array(); //Array para almacenar los nuevos codigos
  33. $nt = array(); //Array para almacenar los nuevos textox
  34. $ns = array(); //Array para almacenar los nuevos stock
  35. $x = 0; //Variable contador de repetidos
  36.  
  37. //Recorremos 2 veces el array de los códigos para encontrar repetidos
  38. foreach ($codigo as $i => $cod) {
  39.     foreach ($codigo as $i2 => $cod2) {
  40.         //Comparamos que los 10 primeros caracteres del codigo sean iguales
  41.         //y que no se haga agregado en el array auxiliar de repetidos.
  42.         if (substr($cod, 0, 10) == substr($cod2, 0, 10) && ! in_array($cod, $arr)) {
  43.             //Si se cumple la condición sumamos un repetido.
  44.             $x++;
  45.         }
  46.     }
  47.     /*Si el numero de repetidos es mayor o igual a 2 entonces agregamos el codigo
  48.     al array auxiliar. Si no es repetido entonces agregamos los datos a los array
  49.     tal como vienen de los array originales.*/
  50.     if ($x >= 2) {
  51.         $arr[$i] = $cod;
  52.     } else if ($x == 1) {
  53.         $nc[] = $cod;
  54.         $nt[] = $texto[$i];
  55.         $ns[] = $stock[$i];
  56.     }
  57.     //Devolvemos el contador de repetidos a cero para seguir con el seguiente código.
  58.     $x = 0;
  59. }
  60.  
  61. //Dividimos el array en parejas (No hice el ejemplo para encontrar más de 2 coincidencias)
  62. $res = array_chunk($arr, 2);
  63.  
  64. //Recorremos todas las parejas de repetidos
  65. foreach ($res as $clave => $valor) {
  66.     //Sacamos los indices del código uno para sacarle el texto.
  67.     $arrs = array_search($res[$clave][0], $arr);
  68.     //Sacamos los indices del código dos para poder sumarlos.
  69.     $arrsc = array_search($res[$clave][1], $arr);
  70.     //Agregamos al array los numeros
  71.     $nc[] = $res[$clave][0];
  72.     //Agregamos al array los textox
  73.     $nt[] = $texto[$arrs];
  74.     //Sumamos los 2 codigos y agregamos al array el resultado.
  75.     $ns[] = $stock[$arrs] + $stock[$arrsc];
  76. }
  77.  
  78. //Por último imprimo los array.
  79. echo '<pre>';
  80. print_r($nc);
  81. print_r($nt);
  82. print_r($ns);
  83. echo '</pre>';
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP