Je me demandais quelle est la meilleure façon de transtyper une valeur d'un type à l'autre.
Quelle variante devrions-nous utiliser:
intval($value);
settype($value, 'int')
(int)$value
Tous produisent le même résultat.
(int)$value
enregistre un appel de fonction à comparer avec intval($value)
et settype($value, 'int')
.
Et (int)$value
est assez propre, donc je préfère cette façon.
Lorsque vous devez utiliser intval($value)
, vous devez utiliser la base spécifiée pour la conversion (la valeur par défaut est la base 10). intval accepte un deuxième paramètre pour la base pour la conversion.
Je préfère utiliser
settype($value,getType(intval((int)$value)));
La réponse ici est d’utiliser ce que vous dites "plus propre". Toute différence de vitesse sera si minime que vous en soucier est presque certain de vous faire perdre plus de temps que vous ne pourriez économiser. Ce qui permettra de gagner du temps, c’est d’avoir un code que vous pourrez lire et comprendre à l’avenir.
Il existe un excellent article expliquant cette chose même à Coding Horror .
(int)$value
est beaucoup plus rapide que d'autres moyens
Cela peut dépendre des types que vous convertissez. PHP est déjà conçu pour convertir les types à la volée. Il peut convertir la chaîne '5' en valeur entière 5 ou float 5.0 si nécessaire. Ce n'est que la conversion de type naturel de PHP, mais il existe des moyens de forcer des comportements similaires.
Dans de nombreux cas, intval () peut être plus rapide que la conversion (int), en particulier lors de la conversion de chaîne en entier. Mais personnellement, comme j'écris aussi en C++, j'utilise la conversion de caractères car c'est plus naturel et plus net pour moi. Les résultats, cependant, varient légèrement selon les situations. Je n'ai jamais pensé à settype () pour être prometteur, cependant.
Le transtypage de caractères dans PHP fonctionne comme en C: le nom du type souhaité est écrit entre parenthèses avant la variable à convertir.
http://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting