检测触发数组中增量编号更改的记录
Detect a record that triggers a change in the incremental numbering in an array
我有一组记录,每一个都有一个编号
NAME | NUMBER
Record1 | 1
Record2 | 2
Record3 | 3
Record4 | 4
Record5 | 5
Record6 | 6
Record8 | 7
table 可以更新,可能的版本如下所示
NAME | NUMBER
Record1 | 1
Record2 | 2
Record4 | 3
Record5 | 4
Record6 | 5
Record7 | 6
Record10 | 7
每次在现有记录之前添加一条记录时,新记录之后的所有记录的编号都会发生变化。如果添加一条记录,则编号将增加 1,如果添加两条记录,则编号将增加 2,依此类推。此外,更新后 table 的行数可能比以前少。
当满足特定条件时,例如当其状态标志更改时,在 table 中添加和删除每一行。
我无法知道记录在特定 table 中添加之前的顺序,也无法知道何时添加,以便从一开始就分配一个唯一编号。
我正在比较更改前后的 table 以检测任何更改,返回的结果是所有具有新编号的行,但未返回触发更改的行。
$a = array_diff($tableBefore, $tableAfter);
$b = array_diff($tableAfter, $tableBefore);
$differences = array_merge(array_diff($a, $b), array_diff($b, $a));
我需要检测触发增量编号更改的单个记录或记录集。
如果不解决 foreach
循环并检查每条新旧记录是否存在 and/or 如果它有新号码,我如何才能实现这一目标?
将 table 数据加载到关联数组中,例如
$tableBefore = array(
'Record1' => 1,
'Record2' => 2,
...
'Record8' => 7
);
$tableAfter = array(
'Record1' => 1,
'Record2' => 2,
...
'Record10' => 7
);
然后使用
$differences = array_merge(array_diff_assoc($tableBefore, $tableAfter),
array_diff_assoc($tableAfter, $tableBefore));
我有一组记录,每一个都有一个编号
NAME | NUMBER
Record1 | 1
Record2 | 2
Record3 | 3
Record4 | 4
Record5 | 5
Record6 | 6
Record8 | 7
table 可以更新,可能的版本如下所示
NAME | NUMBER
Record1 | 1
Record2 | 2
Record4 | 3
Record5 | 4
Record6 | 5
Record7 | 6
Record10 | 7
每次在现有记录之前添加一条记录时,新记录之后的所有记录的编号都会发生变化。如果添加一条记录,则编号将增加 1,如果添加两条记录,则编号将增加 2,依此类推。此外,更新后 table 的行数可能比以前少。
当满足特定条件时,例如当其状态标志更改时,在 table 中添加和删除每一行。
我无法知道记录在特定 table 中添加之前的顺序,也无法知道何时添加,以便从一开始就分配一个唯一编号。
我正在比较更改前后的 table 以检测任何更改,返回的结果是所有具有新编号的行,但未返回触发更改的行。
$a = array_diff($tableBefore, $tableAfter);
$b = array_diff($tableAfter, $tableBefore);
$differences = array_merge(array_diff($a, $b), array_diff($b, $a));
我需要检测触发增量编号更改的单个记录或记录集。
如果不解决 foreach
循环并检查每条新旧记录是否存在 and/or 如果它有新号码,我如何才能实现这一目标?
将 table 数据加载到关联数组中,例如
$tableBefore = array(
'Record1' => 1,
'Record2' => 2,
...
'Record8' => 7
);
$tableAfter = array(
'Record1' => 1,
'Record2' => 2,
...
'Record10' => 7
);
然后使用
$differences = array_merge(array_diff_assoc($tableBefore, $tableAfter),
array_diff_assoc($tableAfter, $tableBefore));