Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

296
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda