我在具有相同表结构的2个不同服务器上执行2个查询。 如何在PHP中合并2个数组?
答案 0 :(得分:4)
PDO::query()返回一个实现接口PDOStatement的Traversable对象 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";
}
答案 1 :(得分:1)
看看array_merge。
array array_merge ( array $array1 [, array $... ] )
将一个或多个数组的元素合并在一起,以便显示值 一个附加到前一个的末尾。它返回 结果数组。
如果输入数组具有相同的字符串键,则后面的值 该密钥将覆盖前一个密钥。但是,如果是数组 包含数字键,后面的值不会覆盖原始值 值,但会附加。
带有数字键的输入数组中的值将重新编号 在结果数组中从零开始递增键。
答案 2 :(得分:0)
请记住,当您查询两个数据库服务器时,除非您为每个记录标识使用UUID,否则您将在记录的ID之间发生冲突(db auto_increment feature)。
因此,当你没有使用uuid生成记录的id时,当你将两个数组与结果合并时,你应该标记一个来自服务器,以避免以后发生冲突。