Para que no genere dos números aleatorios iguales, lo que hago es guardar cada número aleatorio en sesión, luego comparo el número con el array en sesión, si no está entonces retorno el valor y sino vuelvo a generar otro número aleatorio.
El problema es que hay un tramo del código en el que genera un valor nulo, entre que compara el valor e introduce la pregunta en sesión.
El resultado es que hay preguntas que se quedan con valor null.
En el código explico dónde creo que hay errores. Los cuales por más que los he buscado, pensado y analizado no los encuentro.
La función en el controlador que obtiene tanto amigos aleatorios como preguntas aleatorias sobre dicho amigo.
Código PHP:
Ver original
/* obtiene un amigo aleatorio y cinco preguntas sobre el */ function play_start() { { //vacio la sesion con los numeros obtenidos aleatoriamente //y la declaro de nuevo como array para utilizarla en el array_push del metodo //getrandomvalues() //obtengo los amigos en una sesion gettruefriendslist(); //instancio la clase personal $newget = new Twitter_main(); //obtengo un numero de amigo aleatorio $getfriendrandom = $newget->getrandomvalue( $_SESSION['gettruefriendslist'] ); //guardo el amigo aleatorio en sesion $_SESSION['randomresult']['friend'] = $_SESSION['gettruefriendslist'][$getfriendrandom]; //instancio la clase Conectar $newget2 = new Conectar(); //selecciono las preguntas y las guardo en array $select = "SELECT * FROM questions"; $result_conexion = $newget2->conectar( $select ); { $getquestions[] = $result; } //vacio la sesion con las preguntas //y la declaro de nuevo como array para utilizarla en el array_push //VUELVO A VACIAR la sesion con los numeros obtenidos aleatoriamente //y la declaro de nuevo como array para utilizarla en el array_push del metodo //getrandomvalues() //declaro questions como array //obtengo todas las etiquetas $tags = $newget->gettags(); //busco 5 preguntas aleatorias //y sustituyo [nombre] por el valor que deseo finalmente for($i=0; $i<=4 ; $i++) { //obtengo 5 numeros aleatorios //aquí es donde comienza el error $getquestionrandom = $newget->getrandomvalue ( $getquestions ); //no estoy seguro si el error está aquí al guardar de esta manera el valor en questionsrandom //guardo las preguntas segun los numeros anteriores //instancio al metodo para hacer las sustituciones $questionsrandom[$i]['question'] = $newget->setvaluestags($tags, "@".$_SESSION['randomresult']['friend']['screen_name'], $questionsrandom[$i]['question']); } //finalmente lo guardo en sesion } }
Aquí es donde genero los valores aleatorios, tanto para obtener el amigo como para las preguntas
Código PHP:
Ver original
/* genera un valor aleatorio de un array */ public function getrandomvalue ( $imput ) { { } { //cuento los valores del array //resto un valor para que random no escoja un valor no encontrado en el array $this->result = $this->result - 1; //elijo un numero al azar /*$this->result = array_rand( $imput );*/ //no se si puede estar aquí el error, es otra posibilidad que he analizado pero no encuentro nada if( $inarray === false ) { //guardo el valor en count //finalmente retorno el numero escogido return $this->result; } else { $this->getrandomvalue( $imput ); } } }
La estructura del array que utilizo para las preguntas aleatorias son
Código PHP:
Ver original
Quien necesite más de mi código solo tiene que pedirlo y si no compromete al sistema entonces lo aportaré sin problemas.
¿Alguien me puede ayudar a entender por qué obtengo preguntas con valor null?