Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/02/2014, 21:54
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: multiplicacion en array

Otra manera, similar a las anteriores, pero con un par de detalles que lo hacen un poquito más eficiente:

Código PHP:
Ver original
  1. $array1 = array(1, 2, 3, 4);
  2. $array2 = array(5, 6, 7, 8);
  3. $array3 = array();
  4.  
  5. for ($i = 0, $l = count($array1); $i < $l; $i++)
  6.     $array3[] = $array1[$i] * $array2[$i];
  7.  
  8. echo implode("<br />", $array3);

El resultado es:

Código HTML:
Ver original
  1. 5
  2. 12
  3. 21
  4. 32

Es básicamente lo mismo que los ejemplos anteriores, pero como dije al inicio, tiene dos detalles distintos; el primero, que el tamaño del array lo calculo una sola vez y no en cada iteración, porque si coloco directamente $i < count($array1), tendría que calcularse en cada iteración el tamaño del array, en cambio, acá lo hago una sola vez, además, la impresión de los datos la hago insertando un salto de línea mediante la función implode, con lo cual, solamente utilizo 1 bucle, haciendo así un tanto más eficiente al algoritmo.

También es posible hacerlo sin bucles:

Código PHP:
Ver original
  1. $array1 = array(1, 2, 3, 4);
  2. $array2 = array(5, 6, 7, 8);
  3.  
  4. function multi($a, $b){
  5.     return $a * $b;
  6. }
  7.  
  8. $array3 = array_map("multi", $array1, $array2);
  9. echo implode("<br />", $array3);

Y si tienes una versión de PHP mayor o igual a la 5.3, puedes usar una función anónima para ahorrar un poquito más de espacio:

Código PHP:
Ver original
  1. $array1 = array(1, 2, 3, 4);
  2. $array2 = array(5, 6, 7, 8);
  3.  
  4. $array3 = array_map(function ($a, $b){
  5.     return $a * $b;
  6. }, $array1, $array2);
  7.  
  8. echo implode("<br />", $array3);

El resultado es:

Código HTML:
Ver original
  1. 5
  2. 12
  3. 21
  4. 32

Creo los arrays iniciales, además de una función que recibirá los valores de cada uno de ellos, los multiplicará y devolverá a un tercer array. A la función array_map, le paso como parámetros el nombre de la función y ambos arrays, el resultado final, que es un array con los valores de la multiplicación entre cada uno de los elementos de los dos primeros arrays, es entregado a $array3. La función array_map trabaja de forma iterativa, es por eso que le va pasando internamente los valores a la función multi, como normalmente lo harías con un bucle como While o For.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 09/02/2014 a las 13:48