2010-12-12 43 views
0

J'ai ce code qui crée la navigation pour un diaporama. Cela fonctionne très bien sauf que l'une des variables est de rendre le code au mauvais endroit. Comme vous pouvez le voir ci-dessous $imgCount (3 sur 3) devrait être à l'intérieur <div class="next-prev"> </div> mais il se présente avant cette div. Pourquoi est-ce qu'il se déplace en dehors du div qu'il est codé à l'intérieur?PHP Sortie du code dans le mauvais endroit

Voilà comment je pense à la sortie:

<div class="slideshow-nav"> 
    <div> 
     <div class="next-prev"> 
      <a href="/slideshow-one/2/">&larr; Previous 3 of 3 </a><a href="../">Back to Slide One</a> 
     </div> 
    </div> 
</div> 

Voici comment il est délivrer en sortie:

<div class="slideshow-nav"> 
    <div>3 of 3 
     <div class="next-prev"> 
      <a href="/slideshow-one/2/">&larr; Previous </a><a href="../">Back to Slide One</a> 
     </div> 
    </div> 
</div> 

Voici le code qui le met en place:

<div class="slideshow-nav"> 
    <div class="img-count"> 
     <?php function img_count() { 
      global $page, $numpages; 
      echo "$page of $numpages"; 
      } ?> 
     </div> 
    <div> 
     <?php 
      global $page, $numpages; 
        $imgCount = img_count(); 
       if ($page < 2) 
        $next = '<span class="start-ss">Go</span>'; 
       else 
        $next = ' Next &rarr;'; 
       if ($page == $numpages) 
        $previous = '&larr; Previous ' .$imgCount. ' <a href="../">Back to Slide One</a>'; 
       else 
        $previous = '&larr; Previous ...'; 
      wp_link_pages(  
       array(
       'before' => '<div class="next-prev">', 
       'after' => '</div>', 
       'next_or_number' => 'next', 
       'nextpagelink' => $next, 
       'previouspagelink' => $previous, 
       )); 
      ?> 
     </div> 
</div> 

Répondre

6

changement echo à return dans votre fonction, p.ex.

function img_count() { 
    global $page, $numpages; 
    return "$page of $numpages"; 
} 
+0

Parfait, merci! Juste curieux, pourquoi est-ce important? – mattz

+3

'echo' sort la chaîne immédiatement (c'est pourquoi il apparaît dans la sortie au même endroit que vous appelez la fonction), qui * ne peut pas * être assigné à une chaîne (sans utiliser de tampon de sortie, mais vous n'avez pas besoin pour l'instant). 'return' définit cette chaîne comme valeur de retour de la fonction qui * peut * être affectée à une variable. –

+0

merci pour votre réponse! –