IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Conseil pour optimiser code php (if, foreach, etc)


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 21
    Points
    21
    Par défaut Conseil pour optimiser code php (if, foreach, etc)
    Bonjour,

    J’ai un petit bout de code que je souhaiterais optimiser.

    Auriez-vous des conseils ou des corrections à me donner pour optimiser ce code ?

    Merci

    Le but est : je récupère un flux Atom provenant d'un agrégateur de flux RSS/Atom.
    Je sélectionne une image et je supprime un terme à chaque entrée.
    J’affiche un nombre précis d'entrées pour chaque catégorie. Et je limite l'affichage à 5 entrées tout confondu.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php 
    // Pour charger directement un fichier (distant ou local) 
        $xml = simplexml_load_file("/moonmoon/?type=atom10"); 
    //terme à supprimer
    	$asupprimer = Array("APEL :","Flickr :","PCHBlog :","Twitter :","Twitter-2 :","WebNews :");  
    //variables compteurs
    	$compteur = $WebNews = $Flickr = $Twitter = $PCHBlog = $TwitterB = $APEL = $inconnu = "0";
    	echo '<p>'; 
    	foreach($xml->entry as $item)
    		{ 
    			$test = explode(": ", $item->title);
    			if ($test[0] == "WebNews ") {
    				$icone="/autres/icones/standre.jpg";
    				$WebNews++;
    			}  elseif ($test[0] == "Flickr ") {
    				$icone="/autres/icones/flickr.jpg";
    				$Flickr++;
    			} elseif ($test[0] == "Twitter ") {
    				$icone="/autres/icones/twitter.jpg";
    				$Twitter++;
    			}  elseif ($test[0] == "PCHBlog ") {
    				$icone="/autres/icones/PCH.jpg";
    				$PCHBlog++;
    			}  elseif ($test[0] == "TwitterB ") {
    				$icone="/autres/icones/twitter.jpg";
    				$TwitterB++;
    			} elseif ($test[0] == "APEL ") {
    				$icone="/autres/icones/apel.jpg";
    				$APEL++;
    			} 
    			else {
    				$icone="/icones/inconnu.jpg";
    				$inconnu++;
    			}
    //on remplace le terme par un vide
    		$chaine = str_replace($asupprimer,"",$item->title);
    		$lien = $item->link;
    //on affiche l'image, titre, lien
    if ($compteur <"6") {
    	if (($test[0] == "WebNews " && $WebNews < "3") || ($test[0] == "PCHBlog " && $PCHBlog < "2") || ($test[0] == "Flickr " && $Flickr<"2") || ($test[0] == "Twitter " && $Twitter<"3") || ($test[0] == "APEL " && $APEL<"2") || ($icone == "/icones/inconnu.jpg" && $inconnu <"3") ){
    		echo "<img src=\"".$icone."\" alt=\"".$test[0]."\" /> <a href=\" ".$item->link['href']." \">".$chaine." </a> <br />";
    			$compteur++;
     } 
       }
    	}
    echo '</p>'; 
    ?>

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    d'habitude quand on pense optimisation, on parle surtout de réduire le temps d'exécution.
    Pour cela, la seule chose que je pourrais vous conseiller serait d'utiliser "break;" une fois que les 5 éléments ont été affichés afin de sortir de la boucle "foreach" puisque cela ne sert plus de continuer le parcours des éléments.

    Le niveau d'optimisation suivant serait l'optimisation du formatage du code pour que ça soit plus facile à lire et à modifier si vous relisez ce code dans quelques mois.
    Pour cela, la 1re chose à faire est de factoriser le code comme cela par exemple pour les différents éléments à chercher :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php 
    // Pour charger directement un fichier (distant ou local) 
    $xml = simplexml_load_file("/moonmoon/?type=atom10");
     
     
    $tabRecherche = [
        [
            "texte" => "APEL",
            "nombre" => 1,
            "icone" => "/autres/icones/apel.jpg",
        ],
        [
            "texte" => "Flickr",
            "nombre" => 1,
            "icone" => "/autres/icones/flickr.jpg",
        ],
        [
            "texte" => "PCHBlog",
            "nombre" => 1,
            "icone" => "/autres/icones/PCH.jpg",
        ],
        [
            "texte" => "Twitter",
            "nombre" => 2,
            "icone" => "/autres/icones/twitter.jpg",
        ],
        [
            "texte" => "Twitter-2",
            "nombre" => 2,
            "icone" => "/autres/icones/twitter.jpg",
        ],
        [
            "texte" => "WebNews",
            "nombre" => 2,
            "icone" => "/autres/icones/standre.jpg",
        ],
        // dernier élément pour détecter les inconnus
        [
            "texte" => "",
            "nombre" => 2,
            "icone" => "/icones/inconnu.jpg",
        ],
    ];
     
    //variables compteurs
    $totalMax = 5;
     
     
    echo '<p>';
     
    foreach ($xml->entry as $item) { 
     
        $test = explode(" : ", $item->title, 2);
     
     
        foreach ($tabRecherche as $index => $r) {
     
            if (0 === $r["nombre"]) {
                // le nombre maxmimum pour cet élément a été atteint
                continue;
            }
     
            if (    ("" === $r["texte"])
                ||  ($test[0] === $r["texte"])
            ) {
     
                // affichage
     
                echo "{$r["icone"]}<img src=\"{$r["icone"]}\" alt=\"{$test[0]}\"/>";
                echo "<a href=\"{$item->link['href']}\">{$test[1]}</a>";
                echo "<br/>";
     
     
                // mise à jour des compteurs
     
                $tabRecherche[$index]["nombre"]--;
                $totalMax--;
     
     
                // fin du parcours des textes à rechercher
                break;
     
            }
     
        }
     
        if (0 === $totalMax) {
            // sortie de la boucle de parcours des entrées
            break;
        }
     
    }
     
    echo '</p>';

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 21
    Points
    21
    Par défaut
    un grand merci.
    je regarde cela des mon retour vous tiens informé.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 21
    Points
    21
    Par défaut
    merci, c'est en place !

Discussions similaires

  1. PreparedStatment : conseils pour optimiser mon code
    Par Monkey_D.Luffy dans le forum JDBC
    Réponses: 8
    Dernier message: 30/05/2008, 13h49
  2. Conseils pour optimiser une PS
    Par PickEpique dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/08/2007, 11h49
  3. Réponses: 2
    Dernier message: 17/08/2006, 11h49
  4. Réponses: 4
    Dernier message: 26/01/2006, 10h35
  5. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo