Я занимаюсь разработкой веб-сайта с использованием php и получаю данные с сервера sql. Что мне нужно сделать, это 2 строки, которые будут содержать 3 столбца данных в каждой. Ассоциативный массив, в котором я храню данные, имеет 6 подмассивов. Мне нужно создать цикл, в котором после 3-х записей создается новая строка, а данные следующих трех печатаются в следующей строке.
Я попытался использовать цикл while, но я не знаю, как я могу разделить массив по их индексам, как при этом ($ index = mysqli_fetch_assoc (r)) напечатает все данные, но я хочу, чтобы 3 находились в одной строке, а 3 - в следующей. Спасибо!
<?php
$q = "SELECT * FROM main_intro";
$r = mysqli_query($link, $q) or die(mysqli_error($link));
$num_rows = mysqli_num_rows($r);
$count = 0;
$intro = mysqli_fetch_assoc($r);
$keys = array_keys($intro) ?>
<div class="row custom_pad">
<?php
for ($i = 0; $i < 3; $i++) {
?>
<div class="col-md-4">
<h2><?php echo $intro['image']; ?><?php echo $intro['heading']; ?></h2>
<p><?php echo $intro['data']; ?></p>
</div>
<?php} ?>
<!-- -->
</div>
Что мне нужно, так это то, что в первом ряду мне нужны первые 3 массива данных, а затем в следующем ряду мне нужны остальные 3.
Похоже, вы хотите заполнить три столбца каждой строки соответствующими данными. Прямо сейчас вы выборка только одну строки из набора результатов, вы должны использовать во while
цикла перебрать результирующий набор и надлежащим образом заполнить каждый столбец, используя, что for
цикла.
<?php
$q = "SELECT * FROM main_intro";
$r = mysqli_query($link, $q) or die(mysqli_error($link));
while($intro = mysqli_fetch_assoc($r)){
?>
<div class="row custom_pad">
<?php
for ($i = 0; $i < 3; $i++) {
?>
<div class="col-md-4">
<?php
switch($i){
case 0:
echo $intro['image'];
break;
case 1:
echo '<h2>' . $intro['heading'] . '</h2>';
break;
case 2:
echo '<p>' . $intro['data'] . '</p>';
break;
}
?>
</div>
<?php
}
?>
</div>
<?php
}
Вы можете применить условие в цикле и проверить наличие $iterator%3==0
, если условие соответствует, увеличивает индекс массива.
Например
$arr = [];
$j=0;
for($i=1;$i<=9;$i++){
$arr[$j][] = $i;
if($i%3==0) $j++;
}
echo '<pre>';
print_r($arr);
Результат
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)