2010-07-28 6 views
0

Je lisais du code qu'un consultant nous a fourni. Il est un peu alambiquée, et à la fin d'une fonction, il se lit comme suit:Toute différence entre (int) 1 et 1 en PHP?

return (int) 1; 

Au lieu de:

return 1; 

PHP a beaucoup de magie en elle; est-ce que cela est aussi osé qu'il en a l'air, ou y a-t-il une raison valable de lancer un entier comme un entier?

Répondre

5

Non, c'est la même chose. 1 est un littéral entier.

Voir here ce sont tous des littéraux entiers; coulée à int n'a pas d'effet:

$a = 1234; // decimal number 
$a = -123; // a negative number 
$a = 0123; // octal number (equivalent to 83 decimal) 
$a = 0x1A; // hexadecimal number (equivalent to 26 decimal) 

Si vous avez return "1"; qui serait une toute autre affaire. Il existe quelques différences de comportement entre "1" (chaîne) et 1 (int), à savoir avec bitwise operators.

1

C'est plutôt osé. Les littéraux entiers sont, bien ... entiers.

1 === 1 cependant 1 !== '1'

également, le cas échéant, (comme dans ce cas, il est certainement pas) Je suggère de ne pas typecasting avec (int) utilisation intval() à la place.

+0

Pourquoi est-ce? ... – Inigoesdr

+0

@Inigoesdr Pourquoi est quoi? – jordanstephens

+0

Ouais, je n'étais pas clair: je suggère de ne pas typer avec (int) utiliser intval() à la place. – Inigoesdr

Questions connexes