Обтекание div вокруг каждого третьего элемента в цикле foreach PHP

//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> 

Я не могу узнать, как получить индекс ассоциативного массива, или как разбить цикл foreach один раз% 3 == 0.

Любые предложения были бы замечательными!

-Ved

У вас должна быть отдельная переменная счетчика:

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

Вы ищете это? php.net/array_chunk

И у вас есть синтаксическая ошибка там

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

это должно быть

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

закрытие php для запуска тега HTML

В таком случае вы хотели бы сделать что-то подобное. Убедитесь, что переменные правы.

 $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++; } 

Вы можете увеличивать $i внутри цикла foreach, например:

 $i = 0; foreach ($info as $key => $val) { if ($i % 3 == 0) { ... } else { ... } $i++; }