【发布时间】:2021-07-15 07:51:13
【问题描述】:
所以我在 PHP 中有两个对象数组(每个对象都包含名称和电子邮件)。我正在寻找的是获取第一个数组的每个元素的最快方法,第二个数组中具有相似名称或电子邮件的所有元素(我正在使用similar_text 函数来实现这一点)。
我现在这样做的方式是使用两个 foreach 函数将第一个数组的每个元素与第二个数组的每个元素进行比较(并对结果进行一些自定义,但这并不重要)。有没有更好的方法来实现这一目标?因为对于大量元素,它可能需要很长时间。
我正在使用 PHP 7.3.12,因此可以使用此版本完成的解决方案表示赞赏。
谢谢!
编辑:这是没有我所说的所有自定义的基本代码:
$data = [];
foreach($project_developers as $pd1) {
$name1 = $pd1->name;
$email1 = strstr($pd1->email, '@', true);
foreach($project_developers as $pd2) {
//Make sure it's not the same developer db entry.
if($pd1->id != $pd2->id) {
$name2 = $pd2->name;
similar_text($name1, $name2, $percent_name);
$email2 = strstr($pd2->email, '@', true);
similar_text($email1, $email2, $percent_email);
//If the similarity is greater than 80% we can save it.
if($percent_name > 80 || $percent_email > 80) {
if(empty($data[$pd2->id][$pd1->id])) {
$data[$pd1->id][$pd2->id] = $pd2;
}
}
}
}
}
【问题讨论】:
-
你能展示你目前拥有的代码以及你想要实现的一些例子吗?
-
@NigelRen 我添加了代码,谢谢
标签: php arrays object search optimization