突出显示2个数组/数据库行之间的差异

时间:2015-09-11 12:58:28

标签: php mysql arrays

我正在尝试创建一个脚本,该脚本将在数据库中更改行列时突出显示。我已经确定(可能由于缺乏知识)使用array_diff将是实现这一目标的好方法。

我大部分时间都在工作,除了我在最后一行收到错误。

这是创建一个数组的代码,该数组包含当前表行和下一个表行之间的差异:

function fetchDiffs () {
    $sql = $this->main_sql."
            order by lh.date_created desc";
    $stm = $this->db->prepare($sql);
    $stm->bindParam(':id_lead', $this->id_lead);
    $stm->execute();
    $res = $stm->fetchAll();

    if ($res) {
        array_walk_recursive($res, 'sanitize');         
        $diffs = array();
        foreach ($res as $k => $v) {
            if (array_key_exists($k+1, $res)) {
                $diffs[$v['id']] = array_diff($v, $res[$k+1]);
            }
        }
        $this->diffs = $diffs;
    }
}

这样做是创建一个字段数组,其值与下一行相比发生了变化,并使用行id作为主数组键。

根据上面的代码,以下代码用于突出显示postcode行,当下一行的值不同时:

if (array_key_exists('postcode', $this->diffs[$this->row['id']])) 
    echo ' class="warning"';

我应该提到这是课程的一部分,这就是为什么你会看到$this->

现在,此代码在最后一行产生以下错误:

  

注意:未定义的偏移量

我假设这是因为它没有行可以将它与最后一行进行比较。但是,我认为以下代码会阻止这种情况:

if (array_key_exists($k+1, $res)) {

但事实并非如此。我该如何解决?我在这里不知所措,可能是因为睡眠不足。

任何帮助都将不胜感激。

0 个答案:

没有答案