Выборочное взаимодействие через многомерный ассоциативный массив по их индексам в php

0

Я занимаюсь разработкой веб-сайта с использованием 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.

Теги:

2 ответа

0

Похоже, вы хотите заполнить три столбца каждой строки соответствующими данными. Прямо сейчас вы выборка только одну строки из набора результатов, вы должны использовать во 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
}
0

Вы можете применить условие в цикле и проверить наличие $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
    )

  )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню