Ahora entiendo. El problema era que cada vez que se verificaba opciones() dentro de while siempre devolvía un único elemento y me lo repetía infinitas veces.
En cuanto a solucionar con foreach (que me parecio lo más correcto) el bucle se vuelve finito pero dado el array ( [0] => 2 [id] => 2 [1] => prueba 1 [nombre] => prueba 1 ), foreach me devuelve los valores de esta manera:
Esto es más extraño aún (para mí) ya que se supone que el resultado debería ser:
Porque para colmo en la base de datos tengo dos entradas y en la consulta me aparece como resultado sólo una.
Es cierto SoutlinK, debería guardar los resultados en una variable lo que me llevaría a eliminar las funciones ya que es lo mismo que trabajar sin ellas.
De todos modos guardar los resultado de una función en una variable sería un tanto inutil hasta no solucionar el problema del porqué la función devuelve como único resultado el Array ( [0] => 2 [id] => 2 [1] => prueba 1 [nombre] => prueba 1 ).
En cuanto a mi práctica con while siempre lo usé de la siguiente manera:
Código php:
Ver originalecho $registro['id'];
echo $registro['nombre'];
}
Este código ejemplo muestra un bucle finito, siempre me funcionó, pero ahora que quiero usarlo dentro de una función deja de funcionar (ironía).
Desde ya gracias a los que me están ayudando :P