Alléger mon code

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Alléger mon code

par Ryle » 11 juil. 2006, 15:00

Y aurait pas grand chose à redire à ton code.. on peut surement l'optimiser un peu, mais il n'y a pas tellement de choix pour découper des chaines :)

Par contre, ce que tu aurais intérêt à faire c'est de coller tout ça dans une fonction pour pouvoir l'appeller chaque jour sans avoir à le répéter...

Tu pourrais par exemple passer l'index indiquant le début de chaque jour en paramètre :
/**
 * @param String : la ligne concernée
 * @param int : la position du jour demandé
 * @return String : la chaine avec les horaires
 */
function horaires($ligne, $index) {
  $varlu1=(intval(substr($ligne,$index,4))>0) ? substr($ligne,$index,2)."h".substr($ligne,$index+2,2) : ""; 
  $varlu2=(intval(substr($ligne,$index+4,4))>0) ? " - ". substr($ligne,$index+4,2)."h".substr($ligne,$index+6,2) : ""; 
  ...
  return $varlu;
}

// et tu pourrais ainsi l'appeler :

$lundi = horaires($ligne, 419);
$mardi = horaires($ligne, 435);
...

Alléger mon code

par rspir » 11 juil. 2006, 13:28

Bonjour

Je récupère à partir d'un fichier texte plat sans séparateur des horaires d'ouvertures.
L'information disponible pour les horaires d'une journée sont sur 16 caractères donc 112 (7x16) pour la semaine.

Les 16 caractères se décomposent ainsi :
4 car. pour l'horaire d'ouverture matin
4 car. pour l'horaire de fermeture matin
4 car. pour l'horaire d'ouverture ap midi
4 car. pour l'horaire de fermeture ap midi

Pour les boutiques qui ne ferment pas le midi, seuls les 4 car. pour l'horaire d'ouverture du matin + 4 car. pour l'horaire de fermeture de l'ap. midi sont renseignés.
Donc on peut avoir :

0900000000001700 pour 09h00 - 17h00
0835115513351740 pour 08h35 - 11h55 / 13h35 - 17h40

J'ai donc fait le code suivant (pour les horaires du lundi .. je dois donc reproduire pour chaque jour)
$varlu1=(intval(substr($ligne,419,4))>0) ? substr($ligne,419,2)."h".substr($ligne,421,2) : "";
   $varlu2=(intval(substr($ligne,423,4))>0) ? " - ". substr($ligne,423,2)."h".substr($ligne,425,2) : "";
   $varlu4=(intval(substr($ligne,427,4))>0) ? substr($ligne,427,2)."h".substr($ligne,429,2) : "";
   $varlu3=($varlu2 and $varlu4) ? " / " : "";
   $varlu5=(intval(substr($ligne,431,4))>0) ? " - ". substr($ligne,431,2)."h".substr($ligne,433,2) : "";
   $varlu = "{$varlu1}{$varlu2}{$varlu3}{$varlu4}{$varlu5}";
pour obtenir : HHhMM - HHhMM pour les boutiques ouvertes toutes la journée (ou uniquement le matin ou uniquement l'après midi) et HHhMM - HHhMM / HHhMM - HHhMM pour les boutiques observant une fermeture le midi.

Je sollicite donc votre avis sur ce code dans la mesure où :
-> je dois reproduire ce code pour les 7 jours
-> je stocke les variables obtenues dans mysql
-> je ne veux pas conserver les horaires à 0000 (c'est à dire non renseigné)

En clair, mon code peut il être simplifié ? ou est ce que je peux rester sur ce code en le dupliquant pour chaque jour de la semaine ?

LAR