我看到很多“相关”的问题出现了,但我没有看到回答这个特定的场景。
在解析从 SQL 选择语句生成的结果集的 while/for 循环期间,如果下一行包含相同的字段数据(无论是第一个字段还是第 x 个字段)?
例如,如果两行是:
('EML-E','jsmith@mail.com','John','Smith')
('EML-E','jsmith2@mail.com','John','Smith')
基于“EML-E”在两行中相同的事实,仅打印第一行的最佳方法是什么?
现在,我正在这样做:
- 将第一个字段(特定于我的场景)存储到一个 2 元素数组(dupecatch[1])中
- 检查是否 dupecatch[0] = dupcatch[1](重复 - 使用 's' 的转义循环)
处理完行后,设置 dupecatch[0] = dupecatch[1]
while ($DBS->SQLFetch() == *PLibdata::RET_OK) { $s=0; #s = 1 to escape out of inside loop while ($i != $array_len and $s==0) { $rowfetch = $DBS->{Row}->GetCharValue($array_col[$i]); if($i==0){$dupecatch[1] = $rowfetch;} #dupecatch prevents duplicate primary key field entries if($dupecatch[0] ne $dupecatch[1]) { dosomething($rowfetch); } else{$s++;} $i++; } $i=0; $dupecatch[0]=$dupecatch[1]; }