0

这个函数创建<li>标签,我试图给每个li标签一个唯一的 CSS 类名,我试图创建一个for循环来生成数字,但这会产生数字 7,而不是倒数到<li>标签中的数字 7。

非常感谢任何帮助!

function the_meta() {

if ( $keys = get_post_custom_keys() ) {
    echo "<ul class='post-meta'>\n";

 //tried to add this counter here to generate incremental numbers in the foreach loop
    for ($i = 0; $i <= 6; $i++) { } 

    foreach ( (array) $keys as $key ) {
        $keyt = trim($key);
        if ( is_protected_meta( $keyt, 'post' ) )
            continue;
        $values = array_map('trim', get_post_custom_values($key));
        $value = implode($values,', ');


        echo apply_filters('the_meta_key', "<li class='$i'><span class='post-meta-key'>$key:</span> $value</li>\n", $key, $value);

    }


    echo "</ul>\n";
}
  }
4

3 回答 3

2

这行代码:

for ($i = 0; $i <= 6; $i++) { } 

只会增加 $i 直到它达到 6,所以当你进入“主循环”时,变量$i将具有相同的值。为什么要计算另一个循环?

您可以在当前循环中实现计数器:

$i = 1; //Before the loop , set a starting value.
    foreach ( (array) $keys as $key ) {
        $keyt = trim($key);
        if ( is_protected_meta( $keyt, 'post' ) )
            continue;
        $values = array_map('trim', get_post_custom_values($key));
        $value = implode($values,', ');


        echo apply_filters('the_meta_key', "<li class='$i'><span class='post-meta-key'>$key:</span> $value</li>\n", $key, $value);
$i++; //Increase by one!!
    }
于 2012-10-17T16:48:07.357 回答
1

最初的 for 循环并没有真正做任何事情(如您所述),只需将变量初始化为 0,然后在每次使用时打印并递增它:

function the_meta() {

if ( $keys = get_post_custom_keys() ) {
echo "<ul class='post-meta'>\n";
$i=0;
foreach ( (array) $keys as $key ) {
    $keyt = trim($key);
    if ( is_protected_meta( $keyt, 'post' ) )
        continue;
    $values = array_map('trim', get_post_custom_values($key));
    $value = implode($values,', ');


    echo apply_filters('the_meta_key', "<li class='".$i++."'><span class='post-meta-key'>$key:</span> $value</li>\n", $key, $value);

}


echo "</ul>\n";
}
}
于 2012-10-17T16:47:00.303 回答
1

你的 for 循环只是迭代什么都不做。你必须使用:

$i = 0;
foreach ( (array) $keys as $key ) {
   // ...
   $i++;
}
于 2012-10-17T16:48:35.353 回答