Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] multiplicacion en array

Estas en el tema de multiplicacion en array en el foro de PHP en Foros del Web. Buenos dias, una vez mas vengo con problemas para algo que me parece una pavada pero me esta complicando .. tengo armado este array Código ...
  #1 (permalink)  
Antiguo 07/02/2014, 08:32
 
Fecha de Ingreso: septiembre-2012
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta multiplicacion en array

Buenos dias, una vez mas vengo con problemas para algo que me parece una pavada pero me esta complicando .. tengo armado este array

Código PHP:
array (size=2)
    
'fechas' => 
       array (
size=2)
         
=> string '41646' (length=5)
         
=> string '41552' (length=5)
    
'vlsaldos' => 
       array (
size=2)
         
=> string '1394.66' (length=7)
         
=> string '2449.87' (length=7
y necesito multiplicar fechas x vlsaldos y enviar el resultado de cada operacion a otro array

seria por ejemplo fechas[0] * vlsaldos[0] y el resultado a un array
fechas[1] * vlsaldos[1] y el resultado a un array

intenté hacerlo con foreach pero estoy obteniendo que se multipliquen entre todos y no con el que tiene igual indice

Código PHP:
$rmultip=array();
foreach (
$vencimientosnumeros['fechas'] as $key=>$values){

foreach (
$vencimientosnumeros['vlsaldos'] as $key=>$value){

$multiplic = ($values $value);
array_push($rmultip$multiplic);
}} 
espero puedan ayudarme, desde ya gracias! saludos
  #2 (permalink)  
Antiguo 07/02/2014, 08:43
 
Fecha de Ingreso: febrero-2014
Mensajes: 6
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: multiplicacion en array

Creo que esto es lo que buscas :P

Código PHP:
<?php
$fechas 
= array(4164641552);
$vlsaldos = array(1394.662449.87);
$arrayResultados = array();

for (
$i 0$i count($fechas); $i++) {
    
$arrayResultados[$i] = $fechas[$i] * $vlsaldos[$i];
}

echo 
"Resultados: ";
echo 
"<br/>_________________________________<br/>";


for (
$i 0$i count($fechas); $i++) {
    echo 
$fechas[$i] . ' x ' $vlsaldos[$i] . ' = ' $arrayResultados[$i] . "<br/>"
}
?>
Espero te ayude sino aclaranos mas que deseas hacer.
  #3 (permalink)  
Antiguo 08/02/2014, 19:23
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: multiplicacion en array

No se si te valdrá pero esto multiplica los valores de la array 1 * la array 2 y el resultado te lo mete en la array 3

Código PHP:
Ver original
  1. $primero = array(10,20,30,40,50);
  2. $segundo = array (6,5,4,3,2);
  3. $resultado = array();
  4. for($i=0;$i<count($primero);$i++) {
  5.     $resultado[] = $primero[$i] * $segundo[$i]; }
  6. foreach($resultado as $datosResultado) {
  7. echo $datosResultado . " "; }
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #4 (permalink)  
Antiguo 08/02/2014, 21:54
Avatar de 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
  #5 (permalink)  
Antiguo 11/02/2014, 14:25
 
Fecha de Ingreso: septiembre-2012
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: multiplicacion en array

Buenas ! termine usando algo parecido al ejemplo de martinezjc aunque fueron todos muy parecidos, no estaba teniendo el cuenta el bucle for y me resulto muy util,

gracias !
  #6 (permalink)  
Antiguo 11/02/2014, 18:28
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: multiplicacion en array

Me alegro que te haya servido alguno de los códigos
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Etiquetas: multiplicacion
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 13:24.