0

次のような配列があり、それをループしているとします。

$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;?>

現在の配列番号をカウントするにはどうすればよいですか? 最初の while は 1 を表示し、2 番目は 2 を表示します

私はそれを行うことができることを知っています$i++;が、これを行うための配列関数があるかどうか疑問に思いましたか?

foreach ループで key を使用できるかどうかわかりませんか?

4

4 に答える 4

1
array_search(key($sidebar), array_keys($sidebar));

うーん..きれいではありません。forループを使用しますか?:P

于 2012-05-10T18:33:49.697 に答える
0

配列ループのほとんどすべてのニーズにforeachを使用することをお勧めします。

foreach ($sidebar as $single) {}

配列要素をカウントするには、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>";
            };
        }
    }
}
于 2012-05-10T18:37:13.207 に答える
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>";
        }
    }
}

このコードが理にかなっているとはまだ確信が持てませんが、あなたの例に基づいて、少なくとも同じ結果が得られるはずです(また、質問があまり明確ではないため、カウンターをどこに表示したいかもわかりません..だから私は推測しました)。

幸運を。

于 2012-05-10T18:59:07.390 に答える
0

文字列インデックスであなたが求めていることを行う方法があるとは思いません(別のカウンター変数を使用することなく)。for ループ、またはカウンターを使用した別のループは、実際に要求したことを実行する唯一の方法です。

于 2012-05-10T18:38:33.797 に答える