Yo no lo he resuelto con FOREACH, sino con WHILE (aunque puede que el FOREACH sea el más adecuado), la verdad es que me tengo que poner a trabajar en otro asunto, así que te dejo mi código para que (si no llegas a tener una idea clara de como hacerlo) lo revises y te hagas una idea (pero no le hagas hasta que llegues al borde de la desesperación XD):
Código PHP:
Ver original<?php
function crearVector($tamano=10, $min=1, $max=100){
$i=0;
while($i<$tamano){
$i++;
}
return $vector;
}
function elementoMayor($vector=''){
$mayor='';
$i=0;
$numElementos=count($vector);
while($i<$numElementos){
if($mayor<$vector[$i]){
$mayor=$vector[$i];
$mayorId = $i;
}
$i++;
}
if($mayor != ''){
return $mayorId;
}else{
return 'Error';
}
}
function mostrarMayores($vector='', $n=3){
$return = '';
while($n>0){
$mayor = elementoMayor($vector);
$return.= '- El elemento <b>'.$mayor.'</b>, que tiene valor igual a <b>'.$vector[$mayor].'</b><br>';
$n--;
}
if($return != ''){
return $return;
}else{
return 'Error';
}
}
// Se ejecuta asi:
$vector = crearVector();
echo '<b>Para el vector:</b> '; print_r($vector); echo '<br><br>';
echo 'Los elementos de mayor valor (en orden) son:<br>';
echo mostrarMayores($vector);
echo '<br><br><br>';
// Otra posible ejecución es esta:
$vector = crearVector(5, 1, 999); // Es esta se cambia la configura por defecto del array
echo '<b>Para el vector:</b> '; print_r($vector); echo '<br><br>';
echo 'Los elementos de mayor valor (en orden) son:<br>';
echo mostrarMayores($vector, 2); // Aquí estoy pidiendo que solo me muestre los 2 primeros
?>
Esto generaría un resultados, más o menos así:
Cita: Para el vector: Array ( [0] => 56 [1] => 37 [2] => 39 [3] => 54 [4] => 9 [5] => 78 [6] => 77 [7] => 70 [8] => 57 [9] => 58 )
Los elementos de mayor valor (en orden) son:
- El elemento 5, que tiene valor igual a 78
- El elemento 6, que tiene valor igual a 77
- El elemento 7, que tiene valor igual a 70
Para el vector: Array ( [0] => 420 [1] => 753 [2] => 347 [3] => 833 [4] => 986 )
Los elementos de mayor valor (en orden) son:
- El elemento 4, que tiene valor igual a 986
- El elemento 3, que tiene valor igual a 833