Estou tentando verificar se um $ _POST existe e se existir, imprima-o dentro de outra string, se não, não imprima nada.
algo assim:
$fromPerson = '+from%3A'.$_POST['fromPerson'];
function fromPerson() {
if !($_POST['fromPerson']) {
print ''
} else {
print $fromPerson
};
}
$newString = fromPerson();
Qualquer ajuda seria ótimo!
empty()
é correto para a escolha # 1, porque em php, a string é equivalente a - e retorna para todos os valores equivalentes a false . Portanto , usando , o código pularia a impressão se o valor fosse . Se você quiser excluir a string vazia, veja a resposta de Augustus.'0'
false
empty()
true
empty
'0'
Todo mundo está dizendo para usar isset () - que provavelmente funcionará para você.
No entanto, é importante que você entenda a diferença entre
$_POST['x'] = NULL;
e$_POST['x'] = '';
isset($_POST['x'])
retornaráfalse
no primeiro exemplo, mas retornarátrue
no segundo, mesmo que se você tentasse imprimir qualquer um deles, ambos retornariam um valor em branco.Se você
$_POST
vier de um campo / formulário inserido pelo usuário e for deixado em branco, ACREDITO (não estou 100% certo disso) que o valor será "", mas NÃO NULO.Mesmo que essa suposição esteja incorreta (alguém, por favor, me corrija se eu estiver errado!), O acima ainda é bom saber para uso futuro.
fonte
empty()
está correto aqui, porque em php, a string é equivalente a - e retorna para todos os valores equivalentes a false . Portanto , usando , o código pularia a impressão se o valor fosse .'0'
false
empty()
true
empty
'0'
Surpreso por não ter sido mencionado
fonte
isset($_POST['fromPerson']
étrue
, emboraif($_SERVER['REQUEST_METHOD'] == 'POST'
sejafalse
. A menos que haja tal situação, tudo o que é necessário é aisset...
parte.fromPerson
pode não estar presente, mas POST ainda pode existir. A pergunta era: "Se $ _POST existir." e apenas em um exemplo, $ _POST ['fromPerson'] é usado. Em algumas situações, como @goat descreve aqui , mesmo sefromPerson
fosse um nome de envio , ele pode não estar presente no POST.fonte
A maneira adequada de verificar se a chave de array existe é a função
array_key_exists()
A diferença é que quando você tem
$_POST['variable'] = null
isso significa que a chave existe e foi enviada, mas o valor era nuloA outra opção é a
isset()
que irá verificar se a chave do array existe e se foi definidaA última opção é usar o
empty()
que irá verificar se a chave do array existe se está definida e se o valor não é considerado vazio.Exemplos:
Quanto à sua pergunta
A maneira correta de verificar se o valor foi enviado é usar array_key_exists () com verificação do método de solicitação
Mas há alguns casos que dependem de sua lógica
isset()
eempty()
podem ser bons também.fonte
empty
. De acordo com o comentário de Shi sobre a resposta de Augustus Francis , nãoempty()
está correto como uma escolha alternativa, porque em php, a string é equivalente a - e retorna para todos os valores equivalentes a false . Portanto , usando , o código pularia a impressão se o valor fosse . Se você quiser excluir a string vazia, veja a resposta de Augustus.'0'
false
empty()
true
empty
'0'
isset
não é apropriado.De acordo com a documentação do PHP: http://php.net/manual/en/function.array-key-exists.php
(veja o Exemplo # 2 array_key_exists () vs isset () )
O método
array_key_exists
destina-se a verificar a presença da chave no array.Portanto, o código da pergunta pode ser alterado da seguinte forma:
fonte
isset
solução em comportamento quando o campo de postagem é definido, mas contém NULL. Esta é uma boa alternativa , se você quiser permitirNULL
noelse
ramo. No entanto , é um erro, se uma string for necessária; nessa situaçãoisset
faz a coisa certa, mas este código não - ele vai passar oNULL
valor adiante. A resposta posterior de Robert demonstra a diferença.Todos os métodos são desencorajados, é um aviso no Netbeans 7.4 e certamente é uma boa prática não acessar variáveis superglobais diretamente, use um filtro em vez
fonte
isset
é muito mais legível do que uma expressão de filtro. Mas obrigado por apontar isso; é uma opção útil a se considerar.empty
, atrapalhou-se com a digitação solta do php; é difícil imaginar que acessar $ _POST seria considerado ruim estilo.)Experimentar
fonte
empty($_POST['fromPerson'])
faz esse teste combinado. Mais fácil de ler e digitar :)empty('0')
retornatrue
. Portanto, não é o mesmo.Tentar ?
isset
($_POST['fromPerson'])
fonte
fonte
is_array()
verifica se é um array, a segunda parte verifica se há um item com a chave'fromPerson'
.if( isset($_POST['fromPerson']) )
está certo.Você pode usar uma função e retornar, melhor do que direcionar o eco.
fonte
Gosto de verificar se está configurado e se está vazio em um operador ternário.
fonte
empty('0')
étrue
. Então é melhor não terversion
0
, ouuserID
0
, etc.Eu gostaria de adicionar minha resposta, embora este tópico tenha anos e tenha uma boa classificação no Google para mim.
Meu melhor método é tentar:
Como
$_POST
é um array, se o script carregar e nenhum dado estiver presente na$_POST
variável, ele terá um comprimento de array de 0. Isso pode ser usado em uma instrução IF.Você também pode estar se perguntando se isso gera um erro de "índice indefinido", visto que estamos verificando se
$_POST
está definido ... Na verdade,$_POST
sempre existe, o erro "índice indefinido" só aparecerá se você tentar pesquisar por $ _POST valor da matriz que não existe.$_POST
sempre existe em si mesmo sendo vazio ou tem valores de matriz.$_POST['value']
pode não existir, gerando assim um erro de "índice indefinido".fonte