Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Entrada pelo teclado

Como faço para ter várias entradas pelo teclado em um única linha?

por exemplo, eu sei que dá para fazer com várias linhas diferentes assim:

$valor = readline();
$valor2 = readline();

Em que no prompt a cada enter eu entro para a próxima instrução. E quando eu precisar fazer a entrada de 2 valores diferentes na mesma linha separadas somente pelo espaço, algo que seja equivalente ao python:

valor, valor2 = map(int, input().split())
4 respostas

Oi Everton, beleza?

Caso eu tenha entendido corretamente a sua dúvida basta, após escrever o nome do arquivo .php no prompt, passar os parâmetros separados por espaço.

Por exemplo: Digamos que seu arquivo se chame "teste.php" e você quer passar dois parâmetros (nome e idade), então, você vai chamar o programa da seguinte forma "php teste.php 'Everton' 20".

E para capturar esses parâmetros no arquivo "teste.php" é através do array interno do php $argv. Seguindo o exemplo anterior, para capturar o nome será através do primeiro indice ($argv[0]) por que foi o primeiro parâmetro passado para o programa e para capturar a idade será através do segundo indice ($argv[1]), pois foi o segundo parâmetro passado.

Talvez tenha ficado um pouco confusa a minha explicação, mas, qualquer dúvida estou à disposição.

solução!

Oi Everton, como vai?

Complementando a resposta do Diego, outra forma de resolver seria utilizando a função explode do php, o código ficaria assim:

<?php

$valores = readline();
$valoresFormatados = explode(' ', $valores);

$valor1 = $valoresFormatados[0];
$valor2 = $valoresFormatados[1];

echo $valor1.PHP_EOL;
echo $valor2.PHP_EOL;

Neste caso, passei 2 argumentos para a função explode, o primeiro foi um espaço em branco que será utilizado como delimitador para separar os valores lidos, o segundo é a variável que contém os valores lidos.

A função explode sempre retorna uma matriz de strings, neste caso, a variável $valoresFormatados que recebeu a matriz com os valores separados por espaços em branco. Então, com os valores já separados, podemos acessá-los pelas posições da matriz, igual acessei os valores 1 e 2.

Para saber mais sobre a função explode, acesse esse link: Documentação oficial sobre a função explode

Caso tenha quaisquer comentários ou dúvidas a respeito de alguma aula ou desafio, pode postar aqui no fórum que vamos te responder!

Abraços e bons estudos!

Ah sim, boa Murillo, o explode irá resolver. Agora que entendi a dúvida do Everton :) O argv não irá servir por que ele quer usar o readline().

Obrigado gente!