PHP зацикливание одного массива внутри другого

0

Я пытаюсь зациклить один массив внутри другого, а затем сбросить внутренний массив, как только он достигнет конца сайта знакомств http://www.arab.dating

У меня есть один массив, который заполняется из запроса базы данных. Это я очень хорошо знаком и выгляжу так:

$sql="SELECT users from users LIMIT 100;";
$pds=$database->pdo->prepare($sql); $pds->execute(array()); $rows=$pds->fetchAll();

Затем мне нужно заполнить еще один массив данными, и я пробовал две идеи:

1.

$accountArray[] = array('1' => 'data', '2' => 'data', '3' => 'data', '4' => 'data');
$accountArray[] = array('1' => 'data', '2' => 'data', '3' => 'data', '4' => 'data');
$accountArray[] = array('1' => 'data', '2' => 'data', '3' => 'data', '4' => 'data');

2.

$accountArray = array(array(1 => 'data',
                                    2 => 'data',
                                    3 => 'data',
                                    4 => 'data'
                                ),
                            array(1 => 'data',
                                    2 => 'data',
                                    3 => 'data',
                                    4 => 'data'
                                ),
                            array(1 => 'data',
                                    2 => 'data',
                                    3 => 'data',
                                    4 => 'data'
                                )
                        );

Наконец, мне нужно пройти через начальный массив со вторым массивом внутри, а затем сбросить/перезапустить второй массив после его завершения.

    $num = 0;
    foreach($rows as $value) {
        $message = ucfirst($value['users'];
        echo $message;


        echo $accountArray[$num++]['1'];
}

извините, если это немного ерш.

Я пытаюсь получить решение, где я могу выполнить цикл через возврат БД, а затем продолжить цикл через внутренний $ accountArray [] (который не до тех пор, пока внешний массив $ rows Array).

Также хотел бы знать, как наилучшим образом создать файл $ accountArray [], поскольку я думаю, что мой синтаксис - это прикосновение.

спасибо Адаму

  • 1
    Вы могли бы просто использовать какое-то время поверх этого foreach, а затем просто разбить его, пока оно не удовлетворит столько, сколько вы хотите. Почему вы все равно хотите это делать?
Теги:
arrays

1 ответ

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

Прежде всего, начало вашего $accountArray достаточно хорошо. Возможно, это можно улучшить, основываясь на содержимом массива, но с предоставленными вами данными инициализация прекрасна.

Что касается циклы двух массивов: проще всего работать с модулем (если вы разделите две стороны операции, результат по модулю - это остаток) на этом. Поскольку ключи массива query-result последовательны, мы можем использовать следующий подход:

<?php

$sql = "SELECT users from users LIMIT 100;";
$pds = $database->pdo->prepare($sql);
$pds->execute(array());
$rows = $pds->fetchAll();

$accountArray = array(
    array(
        '1' => '0',
        '2' => 'data', 
        '3' => 'data', 
        '4' => 'data',
    ),
    array(
        '1' => '1',
        '2' => 'data', 
        '3' => 'data', 
        '4' => 'data',
    ),
    array(
        '1' => '2',
        '2' => 'data', 
        '3' => 'data', 
        '4' => 'data',
    ),
);

$accountCount = count($accountArray);  // do this outside of the loop for performance
foreach($rows as $key => $row) {
    $marker = $key % $accountCount;    // the actual magic for selecting the correct array-index

    $message = ucfirst($row['users']);
    echo $message;
    echo $accountArray[$marker]['1'];  // do what you want with the result
}

Ещё вопросы

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