尝试使用foreach在函数中生成增量数字

时间:2012-10-17 16:44:54

标签: php

此功能会创建<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";
}
  }

3 个答案:

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

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

答案 2 :(得分:1)

你的for循环只是迭代无所事事。你必须使用:

$i = 0;
foreach ( (array) $keys as $key ) {
   // ...
   $i++;
}