Usando el bucle do-while en una matriz asociativa en php [cerrado]

Estoy un poco confundido sobre cómo puedo usar el bucle do-while en una matriz asociativa en php. No tengo índices ordenados a partir de 0, por lo que no puedo iterar de manera simple como en el caso de C o Java

NOTA :: Específicamente quiero un tipo de comportamiento do-while ... es decir, el bucle se ejecutaría al menos una vez al principio

preguntado el 08 de noviembre de 11 a las 13:11

¿Qué quieres lograr? Quizás deberías usar foreach ($array as $key=>$value) {} -

En PHP, foreach se suele utilizar con mucha más frecuencia que un bucle for indexado (como en for ($i=0; $i<10; $i++)) -

Esto debería responder a tu pregunta: stackoverflow.com/questions/1951690/… -

@ user401445 No me estás entendiendo. No se puede preguntar genéricamente si se puede usar un do-while con una matriz indexada. Por supuesto que puede, solo depende de lo que necesite hacer. Necesitamos ver qué problema, específicamente, en el código, está tratando de resolver. Puede evaluar las condiciones frente a la devolución de array_keys() por ejemplo, o muchas otras posibilidades. -

-1 por no publicar el código real con el que tiene problemas. -

2 Respuestas

Puede utilizar el array_keys función.

$keys = array_keys($assocArray);
if(!empty($keys)) do{
  $key = array_pop($keys);
  // ...
}while(!empty($keys));

Si realmente desea utilizar un bucle do-while. Pero si un simple bucle while es bueno para usted, el primero no es necesario:

$keys = array_keys($assocArray);
while(!empty($keys)){
  $key = array_pop($keys);
  // ...
};

editar:

Si realmente desea que su bucle se ejecute al menos una vez:

$keys = array_keys($assocArray);
do{
  $key = array_pop($keys);
  if($key===NULL){
    // first (and last) run for an empty array
  }else{
    // ...
  }
}while(!empty($keys));

respondido 08 nov., 11:18

Si solo necesita iterar la matriz completa, debe usar foreach:

foreach($array as $index => $value)
{
  // do some stuff
}

De si no le importa el índice de su matriz:

foreach($array as $value)
{
  // do some stuff
}

respondido 08 nov., 11:18

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.