Пустые результаты, когда я сохраняю записи в массиве, повторяю их для достижения определенного числа и использую foreach для их отображения

0

Это то, что делает мой код: он получает 4 строки из моей таблицы, сохраняет их в массиве, повторяет их до тех пор, пока они не достигнут 20 внутри этого массива, а затем повторит их с помощью цикла foreach... проблема в том, что я получаю пустой результат в конце каждого цикла foreach 4 результаты.

$result = mysql_query("SELECT * FROM ".$table."");
            $row_nr = mysql_num_rows($result); // Find out how many rows I have in the table, lets say 4


        while($rows = mysql_fetch_assoc($result)){
            $arrayrows[] = $rows; // Put my 4 rows in the array
            }   

        // Now I multiply nr. of rows to reach desired number which is 20
        $dbRow=0;
        for($n=0; $n <= 20; $n++)
        {
        if($dbRow > $row_nr) $dbRow = 0;
        $fullarrayrows[$n] = $arrayrows[$dbRow];
        $dbRow++;
        }

        // after some php pagination code I slice the array:
        $arrayslice = array_slice($fullarrayrows, $offset, $rowsperpage);

        // Now i display my array
        foreach($arrayslice as $slice) 
        {
            echo ''.$slice['name'].'';
            echo '<br />';
        }

Проблема в том, что я получаю пустые записи в foreach
name1
name2
name3
name4
ЗДЕСЬ Я ПОЛУЧИЛ ПУСТЫЙ ВХОД
name1
name2
name3
name4
СНОВА Я ПОЛУЧИЛ ПУСТОЙ ВХОД ... и т.д., в конце каждого цикла

Спасибо, пожалуйста, дайте мне представление о том, что не так:)

Теги:
arrays
foreach

1 ответ

0
Лучший ответ

$dbRow индексы начинаются с 0 и заканчиваются на 3 но $row_nr равно 4

так измените эту строку

if($dbRow > $row_nr) $dbRow = 0;

to

if($dbRow >= $row_nr) $dbRow = 0;

Ещё вопросы

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