Cita:
Iniciado por Cuervoo A simple vista no se ve nada (o yo no vi nada) muy evidente. Como usas clases y métodos que no están en el código no se puede copiar y probar qué puede llegar a ser.
Pero si te sirve, te puedo decir que si no usas un debugger podés usar echos en forma de "breackpints" para ir siguiendo los pasos, una forma no muy elegante pero a mi cada tanto me ayuda.
Fijate las variables que setea, los valores que va comparando, por donde se va metiendo.
Sobre todo que cuando entra a if ( $inarray === false ), devuelva un valor correcto. Y despues todos los valores que agrega array_push($questionsrandom, $getquestions[$getquestionrandom]) lo haga bien.
Un ejemplo sería, previo a esa linea.
echo "Agrega la pregunta: array_push($questionsrandom, {$getquestions[$getquestionrandom]})<br />";
Y vas a ir viendo si agrega la pregunta o un valor nulo. Si no es ahi vas haciendo lo mismo por distintos puntos donde pueda estar el error hasta que lo puedas aislar y solucionar.
Muchas gracias por tu ayuda. He probado estos días todo tipo de maneras para atrapar el error (var_dumps, echo) en cada parte del código y he logrado saber dónde se genera precisamente el error pero no entiendo el por qué, por lo tanto no puedo solucionarlo de momento.
El error se genera en el momento que in_array no es false porque el valor ya existe en la lista de números generados, entonces se vuelve a generar un número aleatorio y ese número no existe, pero en la función donde recojo ese número aleatorio lo detecta como null.
Harto ya, voy a instalar xdebug, leer cómo se utiliza y ver cual es el motivo.
Sospecho que el motivo es que la función llama al método, este genera otro valor si el valor generado existe pero ese paso, el de generar un nuevo valor, resta un paso en el for de la función, por lo que hay una pregunta que se queda vacía.
Eso no tendría sentido, puesto que el método se vuelve a llamar a sí mismo y al no retornar valor, solamente volver a llamarse a si mismo ese paso/iteración quedaría al margen de la función, es decir, la función se quedaría esperando a que el método le de un valor y continuaría con la iteración del for.
No se si me he explicado bien.
En definitiva, veré a ver si con xdebug puedo solucionarlo y además la comprobación de repetidos la haré en la función en vez de en el método y si así funciona bien entonces mis sospechas se habrán hecho ciertas.
Saludos!!!