2012-02-25 76 views
0

寫這段PHP代替列出每個數字的最佳方式是什麼?更有效的寫作方式PHP

<?php  $name1  = get_post_meta(get_the_ID(), 'ch_client_name1', TRUE); 
      $name2  = get_post_meta(get_the_ID(), 'ch_client_name2', TRUE); 
      $name3  = get_post_meta(get_the_ID(), 'ch_client_name3', TRUE); 
      $name4  = get_post_meta(get_the_ID(), 'ch_client_name4', TRUE); 
      $name5  = get_post_meta(get_the_ID(), 'ch_client_name5', TRUE); 

      ?> 

這裏是我將要使用的HTML。 所以我想要列表顯示5個名稱中的每一個。

  <li id="<?php the_ID(); ?>" "> 
        <?php echo $name1; ?> 
      </li> 

回答

0

你可以不喜歡它:

<?php 

    for($i = 1; $i <= 5; $i++) { 
    $nameN = "name{$i}"; 
    $$nameN = get_post_meta(get_the_ID(), "ch_client_name{$i}", TRUE); 
    // or $name[$i], if you can 

    ?> 
     <li id="<?php the_ID(); ?>"> 
     <?php echo $$nameN; ?> 
     </li> 
    <?php 
    } 
+0

添加鏈接:http://br2.php.net/manual/en/language.variables.variable.php – 2012-02-25 04:29:37

+1

我用你的解決方案謝謝大衛。必須將get_post_data更改爲get_post_meta並完美工作。乾杯 – user537137 2012-02-25 04:43:16

1
$names = array('ch_client_name1', 'ch_client_name2', 'ch_client_name3', 'ch_client_name4', 'ch_client_name5') 
foreach($names as $name) { 
    $realname = get_post_meta(get_the_ID()), $name, TRUE); 
    echo '<li id="'. theID() .'">'. $realname .'</li>'; 
} 
2

這將工作:

for($i=1;$i<=5;$i++){ 
    ${'name'.$i} = get_post_meta(get_the_ID(), 'ch_client_name'.$i, TRUE); 
} 
0
<?php 
$numberOfNames=5; 
$names = array(); 
for($i=1; $i<=$numberOfNames; $i++) 
    $names[] = get_post_meta(get_the_ID(), 'ch_client_name'.$i, TRUE); 
foreach($names as $k=>$name){ 
    echo "<li id=\"".($k+1)."\">\n$name\n</li>"; 
} 
?> 
0

你甚至可能需要考慮使用此,它可以獲取所有職位meta (自定義)字段一次:

$meta = get_post_custom($post_id = get_the_ID()); 
for($i = 1; $i <= 5; $i++) 
    echo '<li id="client-'.$post_id.'-'.$i.'">'.$meta["ch_client_name{$i}"].'</li>'; 

注意我還修復了這個問題的錯誤時,他問了這一點:

<li id="<?php the_ID(); ?>" "> 

我固定的問題是:

  • HTML @id屬性不能以數字開頭(所以我的前綴爲"client-{$post_id}-"
  • the_ID()返回帖子I D代表五個(5)結果中的每一個,而不是具有@id屬性所需的唯一值。