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