更有效的PHP编写方式

时间:2012-02-25 04:24:39

标签: php wordpress

编写这个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>

5 个答案:

答案 0 :(得分:2)

这将有效:

for($i=1;$i<=5;$i++){
    ${'name'.$i} = get_post_meta(get_the_ID(), 'ch_client_name'.$i, TRUE);
}

答案 1 :(得分: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 :(得分: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
  }

答案 3 :(得分: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>";
}
?>

答案 4 :(得分:0)

您甚至可以考虑使用此功能,即可立即获取所有发布的元(自定义)字段:

$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()返回五(5)个结果中每个结果的帖子ID,而不是具有@id属性所需的唯一值。