2011-05-19 2 views
0

J'ai piraté ensemble ce code avec différentes si et elseif de et demande si elle pourrait être rangea (ma connaissance de la syntaxe est de la foutaise!):Tidy up si et elseif

Plutôt que de montrer tous les fichiers HTML code encore (parce que c'est pareil) y at-il un moyen de combiner tous les elseif et if en un?

if(in_array("Branding", get_field('categories')) && $grid_title == "Branding"){ 
    echo " 
     <div class=\"grid-box\" onclick=\"location.href='" . get_page_link($post->ID) ."';\" style=\"cursor: pointer;\"> 
     <div class=\"phase-1\"> 
      <img class=\"grid-image\" src=\"" . $fields->thumb_image . "\" alt=\"" . $fields->company_name ."\" height=\"152\" width=\"210\" /> 
      <div class=\"grid-heading\"> 
       <h2>". $fields->company_name ."</h2> 
       <h3>" . implode(', ',get_field('categories')) ."</h3> 
      </div> 
     </div> 
     <div class=\"phase-2\"> 
      <div class=\"grid-info\"> 
       <h4>". $fields->project_name ."</h4> 
       <p>". $fields->description ."</p> 
      </div> 
      <div class=\"grid-heading-hover\"> 
       <h2>". $fields->company_name ."</h2> 
       <h3>". implode(', ',get_field('categories')) ."</h3> 
      </div> 
     </div> 
    </div> 
    "; 
} 
elseif(in_array("Web", get_field('categories')) && $grid_title == "Web"){ 
    echo " 
     <div class=\"grid-box\" onclick=\"location.href='" . get_page_link($post->ID) ."';\" style=\"cursor: pointer;\"> 
     <div class=\"phase-1\"> 
      <img class=\"grid-image\" src=\"" . $fields->thumb_image . "\" alt=\"" . $fields->company_name ."\" height=\"152\" width=\"210\" /> 
      <div class=\"grid-heading\"> 
       <h2>". $fields->company_name ."</h2> 
       <h3>" . implode(', ',get_field('categories')) ."</h3> 
      </div> 
     </div> 
     <div class=\"phase-2\"> 
      <div class=\"grid-info\"> 
       <h4>". $fields->project_name ."</h4> 
       <p>". $fields->description ."</p> 
      </div> 
      <div class=\"grid-heading-hover\"> 
       <h2>". $fields->company_name ."</h2> 
       <h3>". implode(', ',get_field('categories')) ."</h3> 
      </div> 
     </div> 
    </div> 
    "; 

} 
else { 
    echo "hello"; 
} 
+4

Cela devrait être sur la révision de code. – Bobby

+0

quel est le différent (incontent) entre deux premières options? – bungdito

+0

Le contenu est le même pour les deux mais les si sont légèrement différents. – Rob

Répondre

1

Le elseif fait la même chose que le premier if. Donc déplacer la condition à la première avec OU et enlever elseif:

if((in_array("Branding", get_field('categories')) && $grid_title == "Branding") || (in_array("Web", get_field('categories')) && $grid_title == "Web")){ 
    echo " 
     <div class=\"grid-box\" onclick=\"location.href='" . get_page_link($post->ID) ."';\" style=\"cursor: pointer;\"> 
     <div class=\"phase-1\"> 
      <img class=\"grid-image\" src=\"" . $fields->thumb_image . "\" alt=\"" . $fields->company_name ."\" height=\"152\" width=\"210\" /> 
      <div class=\"grid-heading\"> 
       <h2>". $fields->company_name ."</h2> 
       <h3>" . implode(', ',get_field('categories')) ."</h3> 
      </div> 
     </div> 
     <div class=\"phase-2\"> 
      <div class=\"grid-info\"> 
       <h4>". $fields->project_name ."</h4> 
       <p>". $fields->description ."</p> 
      </div> 
      <div class=\"grid-heading-hover\"> 
       <h2>". $fields->company_name ."</h2> 
       <h3>". implode(', ',get_field('categories')) ."</h3> 
      </div> 
     </div> 
    </div> 
    "; 
} 
else { 
    echo "hello"; 
} 
+0

Oui, c'est le genre de chose à laquelle je pensais, merci. – Rob

4

Vous devriez envisager d'utiliser PHP de Heredoc pour délimiter les chaînes. Cela aiderait à se débarrasser de l'écho et de tous les caractères d'échappement \.

Utilisez la syntaxe abrégée if/else/elseif/endif de PHP. Il rend plus facile à lire:

if(condition) : 
    //statments 
elseif(condition) : 
    //statments 
endif; 
+0

+1 pour les hérédocs, -1 pour la syntaxe de bloc – Alnitak

+0

Qu'est-ce qui ne va pas avec l'utilisation de la syntaxe abrégée? Personnellement, je trouve plus facile à lire –

1

Si je vous, je garderais le code HTML en texte brut, pas une chaîne PHP:

<?php if(condition) : ?> 
    // html 
<?php elseif(condition) : ?> 
    // html 
<?php endif; ?> 

Il rend ainsi plus facile de lire l'OMI.