我目前正在使用 php 来帮助我找到有效且不重复的条目,
我需要的
- 有效且不重复的列表
- 输入无效输入列表(唯一)
- 重复输入列表
我的方法是首先创建 5 个数组 2 为原始数组,1 为正确(空),1 为有效(空),1 为重复(空)
首先使用原始数组之一,对于每个元素:检查有效并检查重复,如果无效,放入无效数组,并使用 inarray 检查重复
毕竟,我得到一个无效和重复的数组,然后使用原始数组,检查哪个元素不在这两个数组中。并完成了工作。
我的问题是,它似乎效率很低,我该如何改进它?(如果使用一些著名的算法,最好)
谢谢你。
// get all duplicate input and store in an array
for ($row = 1; $row <= $highestRow; $row++) {
for ($y = 0; $y < $highestColumn; $y++) {
$val = $sheet->getCellByColumnAndRow($y, $row)->getValue();
//use reg exp to check whether it is valid
if ($y == $mailColumn && !preg_match($pattern,$val))
{$invaild[]=$row;}
//if valid, test whether it is duplicate
elseif ($y == $mailColumn && in_array($val,$email))
{$duplicate[]=$val;
$duplicate[]=$row;}
if ($y == $mailColumn)
{$email[]=$val;
$email=array_unique($email);}
}
}
// unique invalid array since i just need invalid inputs, not the invalid + duplicate input
$invaild=array_unique($invaild);