Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/10/2007, 15h43   #1
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Par défaut elseif else if

Y'a t'il une différence entre : else if et elseif ?

J'utilisais toujours elseif dans mes programmes et en parcourant mon projet je vois qu'il y a des else if qui se baladent dans le code.

De même je vois pas mal de programmeur mettre à la fin de leur blocs entre accolades des ; . Y'a t'il un intérêt à celà?

Voilà deux questions stupides mais dont je n'ai pas trouvé la réponse et qui m'intriguent.
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 16h04   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par Linio
Y'a t'il une différence entre : else if et elseif ?
Bien sûr que non :
Citation:
Envoyé par http://fr.php.net/manual/fr/control-structures.elseif.php
En PHP, vous pouvez aussi écrire "else if" en deux mots et son comportement sera identique à la version en un seul mot. La sémantique des deux expressions est légèrement différente, mais au bout du compte, le résultat sera exactement le même.
Citation:
Envoyé par Linio
De même je vois pas mal de programmeur mettre à la fin de leur blocs entre accolades des ; . Y'a t'il un intérêt à celà?
Oui, induire des erreurs S'il n'y a pas de blocs liés qui succèdent celui-ci (else ou elseif par exemple) ce n'est pas gênant sinon ça l'est ou le sera.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 21h25   #3
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
C'est bien ce que je pensais pour le ;

Pour le elseif je ne comprends pas bien l'intérêt de laisser les deux choix.

Merci pour cette réponse claire en tout cas.
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 12h12   #4
Invité de passage
 
Inscription : février 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2
Points : 2
Points : 2
Par défaut Else If et ElseIf

Evidement, ce n'est PAS la même chose.
Elseif est plus rapide qu'un else if puisqu'il s'agit d'une seule fonction, ce qui n'est pas le cas du else if.
En effet, si tu as :
if (condition) {traitement}
else {
if (condition) {traitment}
}
c'est forcément plus long, puisqu'il faut d'abord rentrer dans le "else", puis exécuter la fonction if()
Grâce au elseif (condition), tu fais du deux en un, et tu économises le temps de passage entre le else et le if. Le fait de nommer ton opération elseif évite au précompilateur de traduire le "else if" en "elseif".
J'espère avoir été assez clair ;-)
De toute façon, il te suffit de faire un benchmark sur 10 000 d'exécutions de ces deux instructions et tu verras par toi même que le "if elseif" et plus rapide que le "if else if", et même que le switch d'ailleurs.
++
zoukozouko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 12h16   #5
Invité de passage
 
Inscription : février 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2
Points : 2
Points : 2
Par défaut Benchmark ElseIf, Else If, et Switch

Pour ceux que ça intéresse, vous pouvez tester ce benchmark et voir le résultat. C'est flagrant, et très logique aussi...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<html><head></head>
<body>
<?php
 
$t1 = microtime(true);
for ($i=0; $i<10000; ++$i)
{
	for($tes=1; $tes<32; ++$tes)
	{
		if ($tes == 1) $val=0;
		elseif ($tes == 2) $val=0;
		elseif ($tes == 3) $val=0;
		elseif ($tes == 4) $val=0;
		elseif ($tes == 5) $val=0;
		elseif ($tes == 6) $val=0;
		elseif ($tes == 7) $val=0;
		elseif ($tes == 8) $val=0;
		elseif ($tes == 9) $val=0;
		elseif ($tes == 10) $val=0;
		elseif ($tes == 11) $val=0;
		elseif ($tes == 12) $val=0;
		elseif ($tes == 13) $val=0;
		elseif ($tes == 14) $val=0;
		elseif ($tes == 15) $val=0;
		elseif ($tes == 16) $val=0;
		elseif ($tes == 17) $val=0;
		elseif ($tes == 18) $val=0;
		elseif ($tes == 19) $val=0;
		elseif ($tes == 20) $val=0;
		elseif ($tes == 21) $val=0;
		elseif ($tes == 22) $val=0;
		elseif ($tes == 23) $val=0;
		elseif ($tes == 24) $val=0;
		elseif ($tes == 25) $val=0;
		elseif ($tes == 26) $val=0;
		elseif ($tes == 27) $val=0;
		elseif ($tes == 28) $val=0;
		elseif ($tes == 29) $val=0;
		elseif ($tes == 30) $val=0;
		else $val=0;
	}
}
$t2 = microtime(true);
 
$t =  $t2-$t1;
echo 'temps ElseIf (val = ' . $tes . '/30) : ' . $t . '<br />';
 
 
$t1 = microtime(true);
for ($i=0; $i<10000; ++$i)
{
	for($tes=1; $tes<32; ++$tes)
	{
		if ($tes == 1) $val=0;
		else if ($tes == 2) $val=0;
		else if ($tes == 3) $val=0;
		else if ($tes == 4) $val=0;
		else if ($tes == 5) $val=0;
		else if ($tes == 6) $val=0;
		else if ($tes == 7) $val=0;
		else if ($tes == 8) $val=0;
		else if ($tes == 9) $val=0;
		else if ($tes == 10) $val=0;
		else if ($tes == 11) $val=0;
		else if ($tes == 12) $val=0;
		else if ($tes == 13) $val=0;
		else if ($tes == 14) $val=0;
		else if ($tes == 15) $val=0;
		else if ($tes == 16) $val=0;
		else if ($tes == 17) $val=0;
		else if ($tes == 18) $val=0;
		else if ($tes == 19) $val=0;
		else if ($tes == 20) $val=0;
		else if ($tes == 21) $val=0;
		else if ($tes == 22) $val=0;
		else if ($tes == 23) $val=0;
		else if ($tes == 24) $val=0;
		else if ($tes == 25) $val=0;
		else if ($tes == 26) $val=0;
		else if ($tes == 27) $val=0;
		else if ($tes == 28) $val=0;
		else if ($tes == 29) $val=0;
		else if ($tes == 30) $val=0;
		else $val=0;
	}
}
$t2 = microtime(true);
 
$t =  $t2-$t1;
echo 'temps Else If (val = ' . $tes . '/30) : ' . $t . '<br />';
 
 
$t1 = microtime(true);
for ($i=0; $i<10000; ++$i)
{
	for($tes=1; $tes<32; ++$tes)
	{
		switch($tes)
		{
			case 1 : $val=0; break;
			case 2 : $val=0; break;
			case 3 : $val=0; break;
			case 4 : $val=0; break;
			case 5 : $val=0; break;
			case 6 : $val=0; break;
			case 7 : $val=0; break;
			case 8 : $val=0; break;
			case 9 : $val=0; break;
			case 10 : $val=0; break;
			case 11 : $val=0; break;
			case 12 : $val=0; break;
			case 13 : $val=0; break;
			case 14 : $val=0; break;
			case 15 : $val=0; break;
			case 16 : $val=0; break;
			case 17 : $val=0; break;
			case 18 : $val=0; break;
			case 19 : $val=0; break;
			case 20 : $val=0; break;
			case 21 : $val=0; break;
			case 22 : $val=0; break;
			case 23 : $val=0; break;
			case 24 : $val=0; break;
			case 25 : $val=0; break;
			case 26 : $val=0; break;
			case 27 : $val=0; break;
			case 28 : $val=0; break;
			case 29 : $val=0; break;
			case 30 : $val=0; break;
		}
	}
}
$t2 = microtime(true);
$t =  $t2-$t1;
echo 'temps Switch (val = ' . $tes . '/30) : ' . $t . '<br />';
 
?>
</body>
</html>
zoukozouko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 10h30   #6
Nouveau Membre du Club
 
Inscription : juin 2004
Messages : 32
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2004
Messages : 32
Points : 36
Points : 36
résultat du petit test de code ci-dessus, chez moi ce n'est pas du tout parlant !


refresh 1 :
temps ElseIf (val = 32/30) : 0.337461948395
temps Else If (val = 32/30) : 0.336936950684
temps Switch (val = 32/30) : 0.334349155426

refresh 2 :
temps ElseIf (val = 32/30) : 0.338791131973
temps Else If (val = 32/30) : 0.332474946976
temps Switch (val = 32/30) : 0.33616900444

refresh 3 :
temps ElseIf (val = 32/30) : 0.333489894867
temps Else If (val = 32/30) : 0.332661867142
temps Switch (val = 32/30) : 0.334265947342

Refresh 4 (j'ai bougé le code, le bloc du elseif est à la fin maintenant) :
temps Else If (val = 32/30) : 0.348764896393
temps Switch (val = 32/30) : 0.335680961609
temps ElseIf (val = 32/30) : 0.332627773285

temps Else If (val = 32/30) : 0.353483915329
temps Switch (val = 32/30) : 0.33607506752
temps ElseIf (val = 32/30) : 0.335407018661

Et voila ca n'est plus pareil ^^
Du coup je ne sais toujours pas lequel utiliser

Habituellement je fais :
Code :
1
2
3
4
5
6
7
8
if ($budget == 0)
{
} else {
   if ($budget == -1)
   {
   } else {
   }
}
mais je n'ai jamais cerné le elseif, donc apparement le code suivant fait la même chose et je le trouve plus "jolie" :
Code :
1
2
3
4
5
6
if ($budget == 0)
{
} elseif ($budget == -1)
{
} else {
}
Allez, en avant pour le elseif du coup
Hitomi_Kay est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h45.


 
 
 
 
Partenaires

Hébergement Web