entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Como poblar un arreglo con un for o while y como recuperar un solo valor

Hola que tal, tengo un pequeño problema en programacion. Tal vez es muy tonto pero no logro comprender por que no funciona.
Quiero crear un arreglo que se valla poblando aleatoriamente. Luego recuperar un solo valor el cual yo quiera saber que hay en esa posicion.

$i = 0;
while ($i <= 10){
  $arreglo = array($i);
  $i++;
}

echo $arreglo[5];

Mi logica dice. creo una variable $i = 0 luego genero 10 digitos mediante un while, esos digitos se los agrego a la variable $arreglo que contiene el array, por ultimo muestro que hay en la posicion 5.
He notado que si cuento cuantos valores hay en el array me indica que 1 $longitud = count($arreglo);
Creo que eso esta pasando por que no estoy poblando el arreglo, esto quiere decir que hay una funcion que me ayuda a poblar mi $arreglo con un valor siguiente. ya lo intente con array_push($arreglo, $i); pero tampoco me funciono, alguien que me pueda indicar como resolver tan sencillo problema. Ya busque en san Google pero no hay nada parecido, ya que la mayoria extraen todos los datos del arreglo.

2 Respuestas

2votos

versce123mx Puntos1990

Ya resolvi mi problema, radica en en ambito de las variables, si coloco $arreglo = array($i); dentro del while, solo se esta repitiendo pero no le agrega nada, a un que le colocara array_push($arreglo, $i); no lo rellenaria ya que la iteracion no lo permite, por lo tanto se deja fuera de la iteracion para que el nuevo valor lo agregue y el arreglo tenga un dato nuevo.
Este codigo contiene la variable $stack por que lo saque del manual de php oficial, y solo adapte las partes a mis nesecidades. De echo mucha logica la retome de leer casi el mismo problema pero con JavaScript y el Sr Leonardo-Tadei me ayudo, entonces eso me ayudo a resolver mi pequeño problema.

$i=1;
$stack = array($i);
while ($i < 10) {
array_push($stack, $i); 
$i++;
}
echo $longitud = count($stack);
//echo $stack[9];
//print_r($stack);

1voto

Peter comentado

Gracias por compartir la solución! :D

1voto

Leonardo-Tadei Puntos227320

Hola @versce123mx,

tu solución es correcta y me alegra que hayas llegado a ella, pero tu interpretación de por qué el código anterior no funcionaba está mal...

Tu código anterior no funciona, pero no es por un problema de ámbito, cosa que no existe para las estructuras de repetición ni de desición. No funciona porque al hacer dentro del while

...
$arreglo = array($i);
...

estás cada vez volviendo a definir el array, que es de un elemento. Al final del bucle, habrás sobreescrito el array 10 veces con 1 elemento, y por eso la cantidad de elementos finales es 1.

Tu código origina podría funcionar con este simple cambio:

$i = 0;
$arreglo = array(); // define un array vacío
while ($i <= 10){
  $arreglo[] = $i; // asigna un elemento nuevo en cada ciclo al array existente
  $i++;
}

echo $arreglo[5];

El código resultante, además de funcionar, es más claro y legible...

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta