2009-08-26 22 views
3

同じテーブル構造を持つ2つのdiffrendサーバで2つのクエリを実行します。 2つの配列をPHPでどのようにマージできますか?PHPマージ2 mysqlの結果

ありがとうございました

答えて

1

array_mergeをご覧ください。

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

一方の値 が前回の最後に追加されるように、一緒に1つまたは複数のアレイの要素をマージします。結果として配列 を返します。

入力配列に同じ文字列キーがある場合、そのキーの後の値 は前の文字列を上書きします。ただし、配列 に数値キーが含まれている場合、後の値は元の の値を上書きしませんが、追加されます。

数字キー付き入力配列の値は、 数字の0から始まる結果配列に番号が付け替えられます。

0

各レコードIDにUUIDを使用していない限り、2つのデータベースサーバーを照会すると、レコードのID(db auto_increment機能)が衝突することに注意してください。

したがって、レコードのIDの生成にuuidを使用していないときは、2つの配列を結果とマージするときに、後で衝突を避けるために、サーバとの間にマークを付ける必要があります。

4

PDO::query()は、インターフェイスTraversableを実装するPDOStatementオブジェクトを返します。
SPLクラスIteratorIteratorは、任意のトラバーサブルをIteratorのようにラップします。
もう1つのSPLクラスAppendIteratorは、イテレータを「連結して」1つのイテレータのように動作させることができます。

<?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

誰でもこの追加イテレータSeekableを作成する方法を知っていますか? (つまり、このAppendIterator内の特定の場所にジャンプしてデータのサブセットを取得できるようにしますか? –