假设我有一个类似于以下的数组,我正在循环它:
$sidebar = array("Best of the Month" => $featuredBestMonth,
"Featured Content" => $featuredContent);
<? while($item = current($sidebar)):?>
<? if($item):?>
<h3><?=key($sidebar);?></h3>
<? foreach($item as $single):?>
<p><?=$single['title'];?></p>
<? endforeach;?>
<? endif;?>
<? next($sidebar);?>
<? endwhile;?>
如何计算当前的数组编号,以便第一个显示1,第二个显示2?
我知道我可以用$i++;
来做,但只是想知道是否有一个数组函数可以做到这一点?
不确定我是否可以在foreach循环中使用key?
答案 0 :(得分:1)
array_search(key($sidebar), array_keys($sidebar));
嗯......不漂亮。使用for
循环? :P
答案 1 :(得分:0)
我建议您使用foreach来满足几乎所有的数组循环需求:
foreach ($sidebar as $single) {}
对于count数组元素,只需使用count()
count ($sidebar);
if (is_array($sidebar))
foreach ($sidebar as $key => $single) :
?>
<h3><?php echo $key; ?></h3>
<p><?php echo $single['title']; ?></p>
<?
endforeach;
最终解决方案:
if (is_array($sidebar))
{
$i = 0;
foreach ($sidebar as $key => $item)
{
$i2 = ++ $i;
echo "<h3>{$i2}.- $key</h3>\n";
if (is_array($item))
{
$j = 0;
foreach ($item as $single)
{
$j2 = ++ $j;
echo "<p>{$j2}.- {$single['title']}</p>";
};
}
}
}
答案 2 :(得分:0)
我不相信有一种方法可以用字符串索引来做你所要求的(没有使用单独的计数器变量)。 for循环或带计数器的另一个循环实际上是你所要求的唯一方法。
答案 3 :(得分:0)
Oi - 所有这些标签(以及那些短标签)都很难看。感觉很像PHP 4,任何被迫支持这段代码的人都不会很开心。没有违法行为,但我可以建议:
$i = 0;
$sidebar = array(
"Best of the Month" => $featuredBestMonth,
"Featured Content" => $featuredContent
);
foreach($sidebar as $key => $item){
if($item){ // will $item ever NOT evaluate to true?
echo "<h3>".++$i.". $key</h3>";
foreach($item as $single){
echo "<p>$single[title]</p>";
}
}
}
我仍然不确定这段代码是否有意义,但根据您的示例,它至少应该产生相同的结果(也不确定您希望计数器显示在哪里,因为您的问题不是很清楚..所以我猜对了。
祝你好运。