Eu li em algum lugar que a isset()
função trata uma string vazia como TRUE
, portanto, não isset()
é uma maneira eficaz de validar entradas de texto e caixas de texto de um formulário HTML.
Portanto, você pode usar empty()
para verificar se um usuário digitou algo.
É verdade que a
isset()
função trata uma string vazia comoTRUE
?Então, em que situações devo usar
isset()
? Devo usar sempre!empty()
para verificar se há algo?
Por exemplo, em vez de
if(isset($_GET['gender']))...
Usando este
if(!empty($_GET['gender']))...
Respostas:
isset vs.! empty
FTA:
fonte
empty()
também retorna verdadeiro para uma matriz vazia.empty()
retorne TRUE para 0, não é uma boa ideia usar esse operador para matemática no caso de "0" ser acidentalmente uma string. Isso pode ser perigoso. Em vez disso, use básica>
,<
e==
operadores e variáveis converter usandointval()
oufloatval()
.Da maneira mais geral:
isset
testa se uma variável (ou um elemento de uma matriz, ou uma propriedade de um objeto) existe (e não é nula)empty
testa se uma variável (...) contém alguns dados não vazios.Para responder à pergunta 1 :
dá
Porque a variável
$str
existe.E a pergunta 2 :
Você deve usar isset para determinar se uma variável existe ; por exemplo, se você está obtendo alguns dados como um array, pode ser necessário verificar se uma chave é definida nesse array.
Pense em
$_GET
/$_POST
, por exemplo.Agora, trabalhar em seu valor, quando você sabe que existe tal valor: esse é o trabalho de
empty
.fonte
Nenhuma é uma boa maneira de verificar se há entradas válidas.
isset()
não é suficiente porque - como já foi observado - considera uma string vazia como um valor válido.! empty()
também não é suficiente porque rejeita '0', que poderia ser um valor válido.O uso
isset()
combinado com uma verificação de igualdade em uma string vazia é o mínimo necessário para verificar se um parâmetro de entrada tem um valor sem criar falsos negativos:Mas por "mínimo", quero dizer exatamente isso. Tudo o que o código acima faz é determinar se há algum valor para
$_GET['gender']
. Ele não determina se o valor de$_GET['gender']
é válido (por exemplo, um de ).("Male", "Female",
"FileNotFound"
)
Para isso, veja a resposta de Josh Davis .
fonte
isset
destina-se a ser usado apenas para variáveis e não apenas valores, portanto,isset("foobar")
gerará um erro. A partir do PHP 5.5,empty
suporta variáveis e expressões.Portanto, sua primeira pergunta deve ser se
isset
retorna verdadeiro para uma variável que contém uma string vazia. E a resposta é:As tabelas de comparação de tipo no manual do PHP são bastante úteis para essas questões.
isset
basicamente verifica se uma variável tem qualquer valor diferente de nulo, uma vez que variáveis não existentes sempre têm o valor nulo .empty
é uma espécie de contra-parte,isset
mas também trata o valor inteiro0
e o valor da string"0"
como vazios. (Novamente, dê uma olhada nas tabelas de comparação de tipo .)fonte
empty()
também "suporta expressões, ao invés de apenas variáveis" a partir do PHP 5.5.0.Se você tiver um $ _POST ['param'] e assumir o tipo de string, então
é idêntico a
fonte
Você pode reescrever isso como "isset () não é uma forma de validar a entrada." Para validar a entrada, use a extensão de filtro do PHP .
filter_has_var()
dirá se a variável existe enquantofilter_input()
irá filtrar e / ou higienizar a entrada.Observe que você não precisa usar
filter_has_var()
antes defilter_input()
e se solicitar uma variável que não esteja definida,filter_input()
simplesmente retornaránull
.fonte
Quando e como usar:
Verdadeiro para 0, 1, string vazia, uma string contendo um valor, verdadeiro, falso
Falso para nulo
por exemplo
False para 1, uma string contendo um valor, true
Verdadeiro para nulo, string vazia, 0, falso, por exemplo
fonte
isset é usado para determinar se existe uma instância de algo, isto é, se uma variável foi instanciada ... não está preocupado com o valor do parâmetro ...
Pascal MARTIN ... +1 ...
empty () não gera um aviso se a variável não existe ... portanto, isset () é preferível ao testar a existência de uma variável quando você pretende modificá-la ...
fonte
empty
Basta usar :Além disso, se você quiser um valor inteiro, também pode valer a pena verificar isso
intval($variable) !== FALSE
.fonte
empty
...isset
/filter_has_var
deve ser usado para verificar se var existe.fonte
Vim aqui em busca de uma maneira rápida de verificar se uma variável tem algum conteúdo. Nenhuma das respostas aqui forneceu uma solução completa, então aqui está:
Basta verificar se a entrada é
''
ounull
, porque:Solicitar
.../test.php?var=
resultados de URL em$_GET['var'] = ''
Solicitar
.../test.php
resultados de URL em$_GET['var'] = null
isset()
retornafalse
apenas quando a variável existe e não está definida comonull
, portanto, se você usá-la, obterátrue
strings vazias (''
).empty()
consideranull
e''
vazio, mas também considera'0'
vazio, o que é um problema em alguns casos de uso.Se você quiser tratar
'0'
como vazio, useempty()
. Caso contrário, use a seguinte verificação:$var .'' !== ''
avalia comofalse
apenas para as seguintes entradas:''
null
false
Eu uso a seguinte verificação para também filtrar strings com apenas espaços e quebras de linha:
fonte
Eu uso o seguinte para evitar avisos, isso verifica se o var está declarado em GET ou POST e com o prefixo @ você pode verificar com segurança se não está vazio e evitar o aviso se var não estiver definido:
fonte
@
) não deve ser encorajado e não é necessário para o seu snippet. Esta não é uma boa resposta. Você está fazendo uma comparação vaga. Você também pode usar!empty()
.@
vai lhe dar problemas com a depuração, o impacto da página é mais lento e você ainda pode tererror_log
mais de 1 GB em um momento. Basta ser inteligente e usar!empty()
,!is_null()
ou algo parecido.isset () é usado para verificar se a variável está definida com o valor ou não e Empty () é usado para verificar se uma determinada variável está vazia ou não.
isset () retorna verdadeiro quando a variável não é nula, enquanto Empty () retorna verdadeiro se a variável é uma string vazia.
fonte
Fonte: Php.net
fonte
isset () testa se uma variável está definida e não nula:
http://us.php.net/manual/en/function.isset.php
empty () pode retornar verdadeiro quando a variável é definida para certos valores:
http://us.php.net/manual/en/function.empty.php
fonte
isset () vs vazio () vs is_null ()
fonte
! empty fará o truque. se você precisa apenas verificar se os dados existem ou não então use isset outro vazio pode lidar com outras validações
?>
fonte