我正在尝试创建一个脚本,该脚本将在数据库中更改行列时突出显示。我已经确定(可能由于缺乏知识)使用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)) {
但事实并非如此。我该如何解决?我在这里不知所措,可能是因为睡眠不足。
任何帮助都将不胜感激。