Cast de type silencieux
<?php
//declare(strict_types=1);
function foo(float $x): int {
var_dump($x);
return $x;
}
var_dump(foo(1));
//var_dump(foo(1.1));
Un entier est un flottant, mais l’inverse n’est pas toujours vrai. Pour PHP, passer un entier dans une fonction qui type son argument en float transforme cet entier en flottant. La conversion inverse de flottant en entier est également possible, au retour. Cela se produit lorsque strict_types n’est pas activé et lorsque le flottant n’a pas de partie décimale, comme c’est le cas ici.
Sinon, c’est une erreur de type, ou un avertissement de perte de précision.
See Also
- Integers to floats, and back [Try me]
PHP Error Messages
- Return value must be of type int, float returned
- Implicit conversion from float 1.1 to int loses precision
PHP Features
Last updated: 04 October 2026