2010-12-12 13 views
0

私はスライドショーのナビゲーションを作成するこのコードを持っています。変数の1つが間違った場所にコードをレンダリングしていることを除いて、うまく動作します。あなたが見ることができるように$imgCount(3の3)は<div class="next-prev"> </div>の中にあるはずですが、このdivの前に表示されています。PHPが間違った場所にコードを出力する

なぜ内部にコード化されているdivの外側に移動していますか?ここで

は、私は、出力にそれを期待する方法は次のとおりです。

<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> 

は、ここでそれが出力される方法は次のとおりです。

<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> 

答えて

6

変更echoへ:

<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> 

ここでそれを設定するコードですreturnあなたの関数で、例えば

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

完璧、ありがとう!ちょうど興味があります、なぜそれは重要ですか? – mattz

+3

'echo'はすぐに文字列を出力します(これは、関数を呼び出すのと同じ場所に出力されます)。文字列に割り当てることはできません。(出力バッファリングを使わずに、それは今のところ)。 'return'はその文字列を変数に代入できる*関数の戻り値として設定します。 –

+0

あなたの答えに感謝します! –

関連する問題