Sumar vectores

Mil disculpas que lo moleste otra vez...
Tengo otra duda con respecto a arrays
Tengo tres vectores, quiero sumar dichos vectores en un cuarto vector
$v = array(2, 22, 4, 6, 8 , 83 , 2);
 $v2 = array(2, 11, 4, 6, 8 , 33 , 2);
$v3 = array(2, 332, 4, 3, 33 , 83,3 )
Luego preguntar si se repite algún componente decir cuales son, en que vector y en que posición.
He visto foros y la verdad me confunden más.

1 Respuesta

Respuesta
1
Pásame la dirección de alguno de esos fotos que te confunden para ver que información has buscado.
Mil disculpas la demora Experto..
Estos son algunos de los ejemplos
<?
$tabla = array ("Tomates" => "3", "Patatas" => "8", "Harina" => "100", "Truchas" => "13", "Agua" => "8");
$tabla2 = array ("Perjil" => "12","Tomates" => "34","Sardinas" => "45");
//aumentamos el tamaño del array
$result = array_merge ($tabla, $tabla2);
foreach($tabla as $k => $v){
if (array_key_exists($k, $tabla2)) {
foreach($tabla as $k2 => $v2)
{
if ($k= $k2){
$v = $v + $v2;
echo 'Ingrediente:<br> '.$k.' ud: '.$v. ' <br>';
echo 'Ingrediente:<br> '.$k2.' ud: '.$v2. ' <br>';
}
}
}else{
foreach($result as $k3 => $v3){
echo 'Ingrediente:<br> '.$k3.' ud: '.$v3. ' <br>';
}
}
array_merge()
http://www.forosdelweb.com/f18/sumar-dos-arrays-206124/
<?
$tabla = array ("Tomates" => "3", "Patatas" => "8", "Harina" => "100", "Truchas" => "13", "Agua" => "8");
$tabla2 = array ("Perjil" => "12","Tomates" => "4","Sardinas" => "45");
$result = array_merge ($tabla, $tabla2);
foreach($tabla as $k => $v){
if (array_key_exists($k, $tabla2)) {
foreach($tabla as $k2 => $v2)
{
if ($k == $k2){
$v = $v + $v2;
echo 'Ingrediente:<br> '.$k.' ud: '.$v. ' <br>';
echo 'Ingrediente:<br> '.$k2.' ud: '.$v2. ' <br>';
}
}
}else{
foreach($result as $k3 => $v3){
echo 'Ingrediente:<br> '.$k3.' ud: '.$v3. ' <br>';
}
}
?>
--------------
Yo llegue a sumar arrays pero puedo sumar solo 2 arrays cuyo componente se repitan. Lo que necesito hacer es sumar los tres arrays cuyo resultado figure en un cuarto arrays pero solos los componentes que se repitan y sumarlos en cada posición. Tengo 3 arrays quiero sumar solo los componentes que se repitan y decir cuantas veces se repite los componentes y en que posición. En fin no se como comparar el tercer arrays.
E llegado hacer esto pero aca no se q hacer luego..........
<?php
$v = array(2, 22, 4, 6, 8 , 83 , 2);
 $v2 = array(2, 11, 4, 6, 8 , 33 , 2);
$v3=array(2, 11, 7, 6, 8 , 11 , 21);
for($i=0; $i<7; $i++)
{
echo $v[$i];
           echo"<br>";
}
echo "proximo vector";
echo"<br>";
for($i=0; $i<7; $i++)
{
echo $v2[$i];
           echo"<br>";
}
echo "proximo vector";
echo"<br>";
for($i=0; $i<7; $i++)
{
echo $v3[$i];
           echo"<br>";
}
echo "<br>";
echo "aca abajo se suman los tres componentes";
echo "<br>";
for($i=0; $i<7; $i++)
{
$v4[$i] = $v[$i] + $v2[$i]+$v3[$i] ;
 echo ($v4[$i] . "<Br>") ;
}
echo "aca intento sumar solo aquellos comp q se repitan". "<Br>";
echo "<br>";
for($i=0; $i<7; $i++)  
{
if ($v[$i]==$v2[$i])// aca no se como comparar los 3 arrays
{
$v4[$i] = $v[$i] + $v2[$i];//comparando solo dos arrays  funciona!!!
 echo ($v4[$i] . "<Br>") ;
}}
?>
Desde ya saludos y mil disculpas la demora Experto.
Perdona que no termine de entender lo que pretendes hacer, aunque creo adivinarlo. A ver si no me equivoco:
Dados estos tres arrays:
<?php
$v_1 = array(2, 22, 4, 6, 8 , 83 , 2);
$v_2 = array(2, 11, 4, 6, 8 , 33 , 2);
$v_3 = array(2, 332, 4, 3, 33 , 83, 3);
?>
¿Deseas unificarlos en uno solo de forma que el resultado sea la "union de todos los arrays" y luego comprobar aquellos números que se repitan?
Si la respuesta es si, comentarte que la función array_merge no solo acepta 2 parámetros, sino los que de desees, de forma que...
<?php
$suma = array_merge($v_1, $v_2, $v_2)
?>
...nos daria la union de los 3 arrays.
Posteriormente, al ordenar la matriz resultante y aplicarle la siguiente funcion...
<?php
sort($suma, SORT_NUMERIC);
$cuantos = array_count_values($suma);
echo "
<pre>";
print_r($cuantos);
echo "</pre>
";
?>
... si mostramos el contenido de $cuantos obtendremos cuantas veces aparece dicho elemento en la matriz procesada, obteniendo el siguiente resultado:
Array
(
[2] => 5
[3] => 2
[4] => 3
[6] => 2
[8] => 2
[11] => 1
[22] => 1
[33] => 2
[83] => 2
[332] => 1
)
Básicamente, sabemos que el 2 estaba 5 veces, el 3 estaba 2 veces, el 4 estaba 3 veces..
Si es eso lo que pretendías ahí tienes un ejemplo muy sencillo y rapido de implementar.
Experto disculpe la tardanza, desde ya es optimo lo expuesto de parte suya. No sabia q se podia emplear sort($suma, SORT_NUMERIC); yo solo lo conocia con sort($algunarray);
la q si conocia es: $cuantos = array_count_values($suma); Ante Finalizar y puntuar tengo otra inquietud si no le seria denso......
Lo anterior q yo expuse el codigo quisiera hacer con ciclos o condicional sin utilizar las funciones $cuantos = array_count_values($suma) -sort($suma, SORT_NUMERIC); obiamente si se puede realizar.
La duma mía se la remarco en el código con comentario en negrita y cursiva si no es molestia. Paro no utilizar la funciones.
Yo tengo 3 arrays quisiera sumar solo los componentes que se repiten obviamente comparando tres vectores y luego contarlos.
<?php
$v = array(2, 22, 4, 6, 8 , 83 , 2);
 $v2 = array(2, 11, 4, 6, 8 , 33 , 2);
$v3=array(2, 11, 7, 6, 8 , 11 , 21);
for($i=0; $i<7; $i++)
{
echo $v[$i];
           echo"<br>";
}
echo "proximo vector";
echo"<br>";
for($i=0; $i<7; $i++)
{
echo $v2[$i];
           echo"<br>";
}
echo "proximo vector";
echo"<br>";
for($i=0; $i<7; $i++)
{
echo $v3[$i];
           echo"<br>";
}
echo "<br>";
echo "aca abajo se suman los tres vectores";
echo "<br>";
for($i=0; $i<7; $i++)
{
$v4[$i] = $v[$i] + $v2[$i]+$v3[$i] ;
 echo ($v4[$i] . "<Br>") ;
}
echo "aca intento sumar solo aquellos comp q se repitan". "<Br>";
echo "<br>";
for($i=0; $i<7; $i++) 
{
if ($v[$i]==$v2[$i])// aca no se como comparar los 3 arrays es decir si se encuentra
{//componentes repetidos para luego sumarlos y contarlos
$v4[$i] = $v[$i] + $v2[$i];//comparando solo dos arrays  funciona!!!
 echo ($v4[$i] . "<Br>") ;
}}
?>
Mil disculpas por la demora tengo arnet con suministro de internet y cada tanto se cae.
Disculpame, pero sigo sin entender muy bien lo que quieres hacer. Para ello, vamos a usar la ingeniería inversa.
Dados tus tres vectores
$v   = array(2, 22, 4, 6, 8 , 83 , 2);
$v2 = array(2, 11, 4, 6, 8 , 33 , 2);
$v3 =array(2, 11, 7, 6, 8 , 11 , 21);
¿Cuál es el vector que quieres obtener?
Indicame el resultado y así creo que terminaré de comprender lo que pretendes.
Mil disculpas lo sucedido.Lo que deseo obtener es :
Calcular las sumas de los componentes que se repiten y contarlos e informar cuales
ejemplo el array :
$v   = array(2, 22, 4, 6, 8 , 83 , 2);
$v2 = array(2, 11, 4, 6, 8 , 33 , 2);
$v3 =array(2, 11, 7, 6, 8 , 11 , 21);
Aca doy el ejemplo....
$v4= 6 y informar q se repiten 3 veses el valor 2  en  la posicion 1 o 0 en los vectores $v $v2 $v3.
$v4 =22 y informa q se repiten 2 veses el valor 11 en la posicion 2 en los vectores $v2 y $v3
$v4=8 y informa q se repiten 2 veces el valor 4 en la posicion 3 en los vectores $v y $v2 y $v3
Algo así si se puede. Si no hay problema Experto.
Saludos atentamente.
No suele ser costumbre en mi dar el trabajo hecho, puesto que entiendo que las pretensiones de esta web son más divulgativas, orientativas e incluso docentes.
Sin embargo, haciendo una excepción, te facilitaré un código que he programado que creo, hace lo que necesitas. Es el siguiente:
$v_1 = array(2, 22, 4, 6, 8, 83, 2);
    $v_2 = array(2, 11, 4, 6, 8, 33, 2);
    $v_3 = array(2, 11, 7, 6, 8, 11, 21);
    for ($i=0;$i<7;$i++) {
        $numero   = $v_1[$i];
        $posicion = $i;
        // Procesamos array v_1
        $final[$numero][$posicion]++;
        // Procesamos array v_2
        $numero   = $v_2[$i];
        $posicion = $i;
        $final[$numero][$posicion]++;
        // Procesamos array v_3
        $numero   = $v_3[$i];
        $posicion = $i;
        $final[$numero][$posicion]++;
    }
    foreach (array_keys($final) as $numero) {
        foreach (array_keys($final[$numero]) as $posicion) {
            $veces = $final[$numero][$posicion];
            if ($veces > 1) {
                echo "El numero $numero aparece $veces veces en la posicion $posicion";
                echo "<br />";
            }
        }
    }
Pruébalo y verás que hace lo que pretendes. El sumar los valores finales lo dejo a tu libre albedrío, con lo que creo que debemos cerrar la pregunta y comenzar una nueva en caso de que necesites más ayuda.
Comentarte que el problema que se te ha planteado no es tanto desconocer el lenguaje PHP en sí, sino conocer nociones de programación, con lo que te animo encarecidamente a que practiques para aprender todo lo que puedas.
De todas formas, estoy aquí para lo que necesites.
Experto.- No era mi intención que usted me proporcione la información pedida, era el ejemplo en codificación que expuse si se le podía agregar algo nada más.
Desde ya muchas gracias...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas