Skip to content

Instantly share code, notes, and snippets.

@andersonfraga
Created September 15, 2011 20:38
Show Gist options
  • Save andersonfraga/1220404 to your computer and use it in GitHub Desktop.
Save andersonfraga/1220404 to your computer and use it in GitHub Desktop.
PHP e suas comparações
<?php
$x1 = (float) "111111111111111111111111111111111111111111111111111111112";
$x2 = (float) "111111111111111111111111111111111111111111111111111111111";
var_dump($x1);
var_dump($x2);
if($x1 == $x2){
echo "iguais";
}
else{
echo "diferentes";
}
/*
float 1.11111111111E+56
float 1.11111111111E+56
iguais
*/
<?php
$x1 = (float) "111111111111111111111111111111111111111111111111111111112";
$x2 = (float) "111111111111111111111111111111111111111111111111111111111";
var_dump($x1);
var_dump($x2);
if(bccomp($x1, $x2)) {
echo "iguais";
}
else{
echo "diferentes";
}
/*
float 1.11111111111E+56
float 1.11111111111E+56
diferentes
*/
<?php
$x1 = "111111111111111111111111111111111111111111111111111111112";
$x2 = "111111111111111111111111111111111111111111111111111111111";
var_dump($x1);
var_dump($x2);
if($x1 == $x2) {
echo "iguais";
}
else{
echo "diferentes";
}
/*
string '111111111111111111111111111111111111111111111111111111112' (length=57)
string '111111111111111111111111111111111111111111111111111111111' (length=57)
iguais
*/
<?php
$x1 = "111111111111111111111111111111111111111111111111111111112";
$x2 = "111111111111111111111111111111111111111111111111111111111";
var_dump($x1);
var_dump($x2);
if(similar_text($x1, $x2) === 0) {
echo "iguais";
}
else{
echo "diferentes";
}
/*
string '111111111111111111111111111111111111111111111111111111112' (length=57)
string '111111111111111111111111111111111111111111111111111111111' (length=57)
diferentes
*/
@andersonfraga
Copy link
Author

Excelente Augusto! :D

@felipernb
Copy link

Muito bom!
Agora a dica para as crianças que estão nos assistindo em casa é que não usem funções caras (O(n^3)) como similar_text ou levenshtein se tudo que você quer é saber se duas strings são iguais. Um === é bem mais barato (O(n) na implementação mais alto nível) e resolve esse problema :)

@augustohp
Copy link

@felipernb: Verdade. Assim como a bcmath! Apesar de sempre ser precisa não é necessária, é só o desenvolvedor ter cuidado (como nunca deveria ter deixado de ter) com os tipos de dado que esa manipulando.

Não é porque o PHP possui type-cast dinâmico que você deve ignorar os tipos de dado.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment