Améliorer du code

Mammouth du PHP | 965 Messages

28 mars 2008, 14:14

Bonjour,

je cherche a améliorer une partie de code que j'ai fais mais qui ne me semble pas optimum :
		// Parking autre n'est pas renseigné 
		if( empty($Array_Lots['Stationnement_autre']) )
		{
		 // Pour un appartement ou un duplex
		 if( $Array_Lots['Id_cat_prod_genre'] == ( 1 or 2 ) )
		 {
		  // Pour les parking interieur
		  if( $Array_Lots['Stationnement_type'] == ( 1 or 2 or 3 ) )
		  {
			 $Parking1 = $Array_Lots['Stationnement_num']; 
			 $Parking2 = NULL;
		  }
			// Pour les parking exterieurs 
			else if( $Array_Lots['Stationnement_type'] == 4 )
			{ 
			 $Parking2 = $Array_Lots['Stationnement_num']; 
			 $Parking1 = NULL;
		  }
		 }
		 //Pour les maisons
		 else if( $Array_Lots['Id_cat_prod_genre'] == 3 )
		 {
		 	// Pour les parking interieur
		  if( $Array_Lots['Stationnement_type'] == 1 )
		  {
			 $Parking1 = $Array_Lots['Stationnement_num']; 
			 $Parking2 = NULL;
		  }
			// Pour les parking exterieurs 
			else if( $Array_Lots['Stationnement_type'] == 2 )
			{ 
			 $Parking2 = $Array_Lots['Stationnement_num']; 
			 $Parking1 = NULL;
		  }	
		 }	
		}else{ 
		$Parking1= NULL; 
		$Parking2 = NULL; 
		}	


Pas possible de passer sur plusieurs switch imbriqués, donc j'ai fais une liste de if / else.

C'est assez simple au final mais je pense que ca peut être largement raccourcis.

Une idée ?

ViPHP
ViPHP | 5924 Messages

28 mars 2008, 15:10

Tu sais, l'important, ce n'est pas avoir un code de 3 lignes, aussi court qu'un script perl. Le principal, c'est du code stable et performant.

ViPHP
ViPHP | 5924 Messages

28 mars 2008, 15:11

Au passage, ce code ne te donnera pas le résultat escompté :
$Array_Lots['Stationnement_type'] == ( 1 or 2 or 3 )
Les 'or' ne sont pas corrects.

ViPHP
ViPHP | 4039 Messages

28 mars 2008, 15:12

Tout en évitant les boucles infinies.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 965 Messages

28 mars 2008, 15:41

Au passage, ce code ne te donnera pas le résultat escompté :
$Array_Lots['Stationnement_type'] == ( 1 or 2 or 3 )
Les 'or' ne sont pas corrects.
Il faudrait utiliser quel syntaxe ?

Et pour les boucles infinies je n'en vois pas ici.

ViPHP
ViPHP | 5924 Messages

28 mars 2008, 16:07

bah
($var == 1) || ($var == 2) || ...

Mammouth du PHP | 965 Messages

28 mars 2008, 16:14

Oui voilà c'est ce que j'ai fais mais je pensais qu'il était possible de les regrouper, car comme SQL le permet je pensais que php pouvait utiliser la même syntaxe.

Merci pour vos réponses.

ViPHP
ViPHP | 5924 Messages

28 mars 2008, 16:42

Oui voilà c'est ce que j'ai fais mais je pensais qu'il était possible de les regrouper, car comme SQL le permet
Non, plus :-/
En SQL, l'opérateur OR dans un tel contexte est un opérateur bit à bit, donc 1 or 2 or 3 est égal à 3 :
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html