4
//set the array
$info = array(
'andy' => 'blue',
'andrew' => 'black',
'mark' => 'green',
'jane' => 'orange',
'simon' => 'red',
'joan' => 'pink',
'sue' => 'yellow',
'alan' => 'black') 


$i = 1;

foreach($info as $key => $val){

    <div class="holder">
        <div class="name">
            <?php echo $Name ?> 
        </div>
        <div class="colour">
            <?php echo $colour ?> 
        </div>
    </div>
} 

これにより、各「ホルダー」クラスが表示されなくなります...しかし、私がやりたいのは、「ホルダー」クラスの周りにコンテナーをラップし、各「コンテナー」に3つの「ホルダー」を配置することです。例えば:

<div class="container">
    <div class="holder">
            <div class="name">
                <?php echo $Name ?> 
            </div>
            <div class="colour">
                <?php echo $colour ?> 
            </div>
        </div>
    <div class="holder">
            <div class="name">
                <?php echo $Name ?> 
            </div>
            <div class="colour">
                <?php echo $colour ?> 
            </div>
        </div>
    <div class="holder">
            <div class="name">
                <?php echo $Name ?> 
            </div>
            <div class="colour">
                <?php echo $colour ?> 
            </div>
        </div>
</div>

連想配列のインデックスを取得する方法、または%3==0でforeachループを中断する方法を見つけることができません。

どんな提案も素晴らしいでしょう!

-Ved

4

4 に答える 4

14

別のカウンター変数が必要です。

$i = 0;
foreach($info as $key => $val){
  if($i%3 == 0) {
    echo $i > 0 ? "</div>" : ""; // close div if it's not the first
    echo "<div class='container'>";
  }
  ?>
    <div class="holder">
        <div class="name">
            <?php echo $Name ?> 
        </div>
        <div class="colour">
            <?php echo $colour ?> 
        </div>
    </div>
<?php
$i++;
}
?>
</div> <!-- close last container div -->
于 2012-11-07T13:38:55.880 に答える
5

これを探していますか?php.net/array_chunk

そして、そこにいくつかの構文エラーがあります

foreach($info as $key => $val){

これはあるべきです

foreach($info as $key => $val){ ?>

PHP を閉じて HTML タグを開始する

于 2012-11-07T13:38:52.650 に答える
1

その場合、このようなことをしたいと思うでしょう。変数を正しく取得してください。

$i = 1;

foreach($info as $key => $val){
    if ($i % 3 == 0) {
         ?>
         <div name='container'>
         <?php
    }
    ?>
    <div class="holder">
        <div class="name">
            <?php echo $key; ?> 
        </div>
        <div class="colour">
            <?php echo $val; ?> 
        </div>
    </div>

    if ($i % 3 == 2) {
         ?>
         </div>
         <?php
    }

    <?php
    $i++;
} 
于 2012-11-07T13:39:32.260 に答える
0

$iforeach ループ内でインクリメントできます。たとえば、次のようになります。

$i = 0;
foreach ($info as $key => $val) {
    if ($i % 3 == 0) {
        ...
    } else {
        ...
    }
    $i++;
}
于 2012-11-07T13:39:19.510 に答える