Pergunta

Eu sei que esta questão não é realmente importante .. porém eu estive pensando:

Qual das seguintes instruções IF é a melhor e mais rápida de usar?

<?php

$variable = true;

if($variable === true)
{
    //Something
}

if($variable)
{
    // Something
}


?>

Eu sei === é para corresponder exatamente o valor booleano. No entanto há realmente alguma melhoria?

Foi útil?

Solução

Usando if ($var === true) ou if ($var) não é uma questão de estilo, mas uma questão de correção. Porque if ($var) é o mesmo que if ($var == true). E comparação == não verifica o tipo. Então 1 == true é verdade, mas 1 === true é falsa.

Outras dicas

No que diz respeito a velocidade, eu concordo com Niels, é provavelmente insignificante.

Quanto qual if é melhor para teste com, a resposta provavelmente depende da fundição esperado e valoriza $ variável pode ter.

Se $ variável é usando 0 e 1 como um verdadeiro falso da bandeira / then if ($ variável) ou if (! $ Variável) iria funcionar, mas se é um resultado inteiro como em strpos () você vai correr em problemas ... se possível, eu recomendo usar um valor booleano real em vez de 0/1.

... talvez isso irá ajudar a esclarecer; comentar as variações de $ var para ver os vários resultados.

<?php

$var = true;
$var = 1;

$var = false;
$var = 0;

if ( $var ) {
    echo 'var = true <br />';
}

if ( $var === true ) {
    echo 'var is a boolean and = true';
}

if ( !$var ) {
    echo 'var = false <br />';
}

if ( $var === false ) {
    echo 'var is a boolean and = false';
}

Apenas um fato:

time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r == true) {} }'

time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r) {} }'

O segundo é mais rápido do que o primeiro.

Eu não estou realmente em profundidade o material técnico de PHP, mas no primeiro caso

if($variable === true)

$ variável tem de ter o mesmo tipo exato tão verdadeiro para a instrução if para ser verdade. Em outras palavras, $ variável tem não só para resolver a verdade, mas também tem que ser um booleano. Então, isso é 2 operações, valor verificação e verificação de tipo.

No segundo caso

if($variable)

$ variável só tem a determinação de verdade. Assim, apenas o valor de verificação ocorre. Deduzo que que leva o computador um pouco de tempo a menos.

Em termos práticos:. As diferenças de velocidade são provavelmente insignificante

=== é realmente útil em strstr / stristr quando a primeira agulha está na posição 0 no palheiro. Se você não usar === ou! == você poderia ter um bug em suas mãos.

$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top