【发布时间】:2010-11-23 03:48:58
【问题描述】:
我在具有相同表结构的 2 台不同服务器上执行 2 次查询。 如何在 PHP 中合并 2 个数组?
【问题讨论】:
我在具有相同表结构的 2 台不同服务器上执行 2 次查询。 如何在 PHP 中合并 2 个数组?
【问题讨论】:
PDO::query() 返回一个实现Traversable 接口的PDOStatement 对象。
SPL 类 IteratorIterator 包装任何 Traversable 以充当 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";
}
【讨论】:
看看array_merge。
array array_merge ( array $array1 [, array $... ] )
将一个或多个数组的元素合并在一起,使值 一个附加到前一个的末尾。它返回 结果数组。
如果输入数组有相同的字符串键,那么后面的值 因为该键将覆盖前一个键。但是,如果数组 包含数字键,后面的值不会覆盖原来的 值,但会被附加。
输入数组中带有数字键的值将重新编号为 在结果数组中从零开始递增键。
【讨论】:
请记住,当您查询两个数据库服务器时,除非您对每个记录标识使用 UUID,否则记录的 id 之间会发生冲突(db auto_increment 功能)。
因此,当您不使用 uuid 生成记录的 ids 时,当您将两个数组与结果合并时,您应该标记 wchich 一个来自服务器以避免以后发生冲突。
【讨论】: