首页 > 解决方案 > 从两个数据源获取数据并在php中循环运行

问题描述

这是一个愚蠢的问题。我需要从两个数据源(一个 Oracle 和另一个 SQL Server)获取数据并比较数据。如果两个数据相同打印,但如果一个数据丢失仅打印一侧,则另一侧留空。目前我运行两个while循环并并排放在一张桌子上。但有时数据不完全相同。我在另一个内部尝试了一个while循环,但结果与预期不同。我该如何存档?无论如何我可以在一个循环中访问数据吗?

例如:
来源 1 - [2018-10-15,2018-10-16,2018-10-18,2018-10-19]
来源 2 - [2018-10-15,2018-10-18]

预期表:

来源 1 | 来源 2

2018-10-15 | 2018-10-15
2018-10-16 | 没有数据
2018-10-18 | 2018-10-18
2018-10-19 | 没有数据

$contents .= '<div class="table-responsive col-md-6"><table class="table table-striped"><thead><tr class="table-active"><th>Time Detail 1</th></tr></thead>';   

while (odbc_fetch_row($result_1)){
    $F_time = odbc_result($result_1,"Time1");
    $s_id = odbc_result($result_1,"id");
    $contents .= '<tr><td class="col-md-1">' . $F_time . ' <sup class="badge badge-success"> ' . $s_id . '</sup></td></tr>';
}

$contents .= '</table></div><div class="table-responsive col-md-6"><table class="table table-striped"><thead><tr class="table-active"><th>Time Detail 2</th></tr></thead>';

while (odbc_fetch_row($$result_2)){
    $F_time2 = odbc_result($$result_2,"time2");
    $contents .= '<tr><td class="col-md-1">' . $F_time2 . '</td></tr>';
}

$contents .= '</table></div></div>';

标签: php

解决方案


由于您拥有通常相同的数据,因此请使用应该匹配的任何唯一数据(最好是某种 ID)作为比较的关键。

  1. 分别从两个数据源检索您的数据。为它们创建单独的数组,其中键是您在数据源之间比较的字段中的数据,值是完整记录。
  2. 将这两个数组的键合并到一个新数组中,并(可选)对该数组进行排序。
  3. 迭代合并的键数组,为每个键创建一行。对于每个数据源,如果存在数据,则在单元格中正常呈现;否则渲染一个空单元格。

这将为您提供一个包含来自两个数据源的所有元素的表格,其中一个源具有数据但另一个没有数据的空单元格。


推荐阅读