Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

295
Vistas
Juego de adivinanzas PHP
<?php $strArray = array("supermarket", "programming", "development", "apache","university"); $index = isset($_POST['index']) ? $_POST['index'] : 0; $message2 = str_shuffle($strArray[$index]); if(!isset($_POST['guess'])){ $message1="<h1>Welcome to the shuffle game!</h1></br>"; $message2=str_shuffle($strArray[$index]); } elseif($_POST['guess'] == $strArray[$index]){ $message1="<h1>You guessed right!</h1></br>"; $index++; $message2=str_shuffle($strArray[$index]); } elseif($_POST['guess'] != $strArray[$index]){ $message1="<h1>You guessed wrong!</h1></br>"; } ?> <!DOCTYPE html> <html> <head><title>Guess the word!</title></head> <body> <?php echo $message1; echo "<b>Try to guess the shuffled word: </b>" . $message2; ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <p><label for="guess">Enter your guess:</label> <input type="text" id="guess" name="guess" /></p> <input type="hidden" name="index" value="<?php echo $index; ?>"> <button type="submit" name="submit" value="submit">Guess</button> </form></body></html>

El problema en este juego es el índice....

Comienza con 0, y cuando alcanza el valor 5 da un error porque obviamente el último valor de la matriz está indexado como 4, por lo que no hay un índice 5 en la matriz. Traté de detenerlo con una declaración if pero causó otros errores! ¿Alguna solución?

El error

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede verificar si $index es demasiado grande comparándolo con la cantidad de elementos en su matriz:

 if ($index < count($strArray)) { // $index is valid } else { // $index is too big }

Necesita esta verificación antes de incrementar $index al elegir la siguiente cadena mezclada.

Su lógica php podría, por ejemplo, verse así:

 <?php $strArray = array("supermarket", "programming", "development", "apache","university"); $index = isset($_POST['index']) ? $_POST['index'] : 0; $message2 = str_shuffle($strArray[$index]); if(!isset($_POST['guess'])){ $message1="<h1>Welcome to the shuffle game!</h1></br>"; $message2=str_shuffle($strArray[$index]); } elseif($_POST['guess'] == $strArray[$index]){ $message1="<h1>You guessed right!</h1></br>"; if ($index < count($strArray) - 1) { $index++; } else { $index = 0; } $message2=str_shuffle($strArray[$index]); } elseif($_POST['guess'] != $strArray[$index]){ $message1="<h1>You guessed wrong!</h1></br>"; } ?>

(Nota al margen: en realidad, también debería tener esta verificación justo al principio, donde primero define $index , junto con una verificación de >= 0 y una llamada a is_numeric . De lo contrario, un usuario malintencionado podría enviar $_POST['index'] como por ejemplo, "100" o "-1" o "foo").

over 4 years ago · Santiago Trujillo Denunciar

0

Antes de mostrar el formulario del juego, verifique si $index ha alcanzado la longitud de la matriz. Si es así, muestra un mensaje que dice que el juego ha terminado en lugar del formulario.

 <?php $strArray = array("supermarket", "programming", "development", "apache","university"); $index = isset($_POST['index']) ? $_POST['index'] : 0; $message2 = str_shuffle($strArray[$index]); if(!isset($_POST['guess'])){ $message1="<h1>Welcome to the shuffle game!</h1></br>"; $message2=str_shuffle($strArray[$index]); } elseif($_POST['guess'] == $strArray[$index]){ $message1="<h1>You guessed right!</h1></br>"; $index++; if ($index < count($strArray)) { $message2=str_shuffle($strArray[$index]); } } elseif($_POST['guess'] != $strArray[$index]){ $message1="<h1>You guessed wrong!</h1></br>"; } ?> <!DOCTYPE html> <html> <head><title>Guess the word!</title></head> <body> <?php echo $message1; if ($index < count($strArray)) { ?> <b>Try to guess the shuffled word: </b>" <?php echo $message2; ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <p><label for="guess">Enter your guess:</label> <input type="text" id="guess" name="guess" /></p> <input type="hidden" name="index" value="<?php echo $index; ?>"> <button type="submit" name="submit" value="submit">Guess</button> </form> <?php } else { ?> <b>Game over!</b> <p><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Play again</a></p> <?php } ?> </body></html>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda