Quelle est la différence entre ++$i et $i++ en PHP?
Quelle est la différence entre ++$i
et $i++
en PHP?
Vous devez vous connecter pour publier un commentaire.
Quelle est la différence entre ++$i
et $i++
en PHP?
Vous devez vous connecter pour publier un commentaire.
++$i
est pré-incrémentation, tandis que$i++
la post-incrémentation.i
d'abord et ensuite de référence.i
Pour plus de précisions, post-incrémentation en PHP a été documenté que le stockage d'une variable temporaire qui attribue à ce 10% de frais généraux vs pré-incrémentation.
for($i=0; $i<count($list); ++$i)
++$i
incréments$i
, mais évalue à la valeur de$i+1
$i++
incréments$i
, mais renvoie l'ancienne valeur de$i
.Voici un exemple:
Il y a parfois une légère performance frais pour l'utilisation de
$i++
. Vous voyez, quand vous faites quelque chose commeVous êtes vraiment en train de faire ceci:
++$i
est pré-incrémentation$i
est incrémenté$i++
est post-incrémentation$i
copié d'une variable temporaire$i
est incrémenté$i
est retournédans ce cas, il n'y a pas de différence:
mais:
cet exemple elplains simplement
Différence est:
++$i
incrémente$i
variable et retourner à jour de la valeur, tandis que$i++
sera de retour la valeur d'origine, donc l'incrémenter.Pour expliquer jldupont point:
Une autre façon de voir les pré-et post-incrémentation, c'est que c'est un raccourci pour combiner 2 états.
Pré-incrémentation
Post-incrémentation
Le but principal de la post-fix opérateur d'incrémentation est l'utilisation comme ceci:
C'est un moyen très élégant, comment la contourner certaines tableau itérations.
Répartition:
Dans tous les autres cas, vous devez utiliser le préfixe de l'opérateur. Elle rend le code beaucoup plus clair (Vous pouvez être sûr que vous travaillez déjà avec la valeur incrémentée de variable particulier).
C'est probablement mieux illustrée par un exemple...
La Post-incrémentation:
Pré-incrémentation:
Réponse courte:
Réponse longue: Si vous pensez un peu à ce sujet, comment vous mettre en œuvre ces vous-même, vous aurez probablement réaliser pourquoi préfixe est plus rapide. La vérité d'être dit, postfix est en fait (souvent) mis en œuvre à l'aide de préfixe:
Éviter de postfix, sauf si vous avez une raison particulière de ne pas. La différence de vitesse peut être tout à fait beaucoup pour les types de données complexes.
J'ai effectivement regardé ce jusqu'à il y a quelques jours. Voici ma source.
J'ai couru le code suivant pour tester si ++$i est 10% plus rapide que $i++. Je l'avoue, le code n'est pas d'avoir une stabilité des résultats, mais même alors, je devrais au moins avoir vu certains numéros de près de 10%. Le plus haut que j'ai eu était de 4-4.5% environ.
Les deux opérateurs de toujours faire ce qui leur syntaxe implique: pour incrémenter. Indépendamment d'un préfixe ou un suffixe, la variable est sûr d'être incrémenté de 1. La différence entre les deux réside dans leurs valeurs de retour.
1. Le préfixe de l'incrément renvoie la valeur de la variable après qu'il a été incrémenté.
2. D'autre part, le plus couramment utilisé postfix incrément renvoie la valeur de la variable avant il a été incrémenté.
De se rappeler cette règle, je pense que sur la syntaxe des deux. Quand un des types dans le préfixe de l'incrément, on dit ++x. La position de l' ++ est important ici. En disant: ++x moyens d'incrémentation (++) d'abord, puis retourner la valeur de x, donc nous avons ++x. Le postfix incrément fonctionne à l'inverse. Dire x++ moyens de retourner la valeur de x d'abord, puis incrémentation (++) après, donc, x++.