2009-08-26 3 views

ответ

1

Посмотрите на array_merge.

array array_merge (array $array1 [, array $... ])

Сливает элементы одного или более массивов таким образом, что значения одного добавляются к концу предыдущего. Он возвращает полученный массив .

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

Значения во входном массиве с цифровыми клавишами будут перенумерованы с помощью инкрементирующих ключей, начиная с нуля в массиве результатов.

0

Пожалуйста, имейте в виду, что при запросе двух серверов баз данных у вас будет столкновение между идентификаторами записей (функция db auto_increment), если вы не используете UUID для каждой идентификации записи.

Поэтому, когда вы не используете uuid для генерации идентификаторов записей, когда вы объединяете два массива с результатами, вы должны отметить, что с сервера, чтобы избежать столкновений позже.

4

PDO::query() возвращает объект PDOStatement, который реализует интерфейс Traversable.
Класс SPL класс IteratorIterator обертывает любые направляющие, как Iterator.
И еще один класс SPL, AppendIterator, может «конкатенировать» итераторы, чтобы действовать как один итератор.

<?php 
$result1 = $pdo1->query('SELECT * FROM foo'); 
$result2 = $pdo2->query('SELECT * FROM foo'); 

$it = new AppendIterator; 
$it->append(new IteratorIterator($result1)); 
$it->append(new IteratorIterator($result2)); 

foreach($it as $row) { 
    echo join(', ', $row), "\n"; 
} 
+0

Кто-нибудь знает, как сделать это добавленным итератором? (т. е. сделать возможным переход в определенные места в этом AppendIterator для получения подмножества данных? –

Смежные вопросы