PHP性能问题: Faster to leave duplicates in array that will be searched or do array_unique?

标签 php arrays performance

我有向数组添加值的代码。稍后在我的代码的另一部分中搜索该数组。添加到数组中的值不一定是唯一的,因此在搜索的数组中可能会出现重复的值。从技术上讲,即使搜索数组中存在重复项,我的代码也可以正常工作,并且我将能够找到该值。我只想知道该值是否在被搜索的数组中,并不关心它是在数组中1次还是10000次。

我的问题是,在进行搜索之前,是否首选(出于性能和/或风格原因)对正在搜索的数组执行 array_unique() 。

例如,假设我想搜索这样的数组:

$searchMe = Array("dog", "cat", "mouse", "dog", "dog", "dog");

请注意,“dog”出现了 4 次。如果我想在该数组中搜索值“dog”,它将正常工作,并且我将能够知道它存在。如上所述,我不在乎它出现了多少次,我只想知道它是否存在。

那么我应该在搜索之前先执行此操作,然后再搜索重复数据删除的数组吗?

$searchMe_cleaned = array_unique($searchMe);

也就是说,这会比仅搜索具有重复项的数组更快吗?

请记住,虽然在本例中搜索的数组只有几个元素,但搜索的实际数组可能有数百或数千个元素。

谢谢!

最佳答案

我认为 array_uniquein_array 慢,但如果您想多次搜索数组或想节省内存,那么这是有意义的。

另一个选择是使用 array_flip (这也会删除重复的键),然后使用 issetarray_key_exists 因为它们比 in_array 快得多,我个人会这样做。

关于PHP性能问题: Faster to leave duplicates in array that will be searched or do array_unique?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036504/

相关文章:

php - 如何使用平均函数?

php - 根据先前的选择隐藏选择框中的选项。从 SQL 生成的选项

java - 我如何限制 2D 数组用户输入并输出其余值 "."?

c++ - 如何修改/分配矩阵元素值?

javascript - 从 PHP 登录函数获取 javascript 响应

php - 这种对 exit 和 die 的特殊处理是否记录在 PHP 中?

javascript - 如何获取 Javascript 数组内嵌套对象的长度?

使用 += 运算符的 Java 最佳实践

MySQL - 慢速查询优化

excel - 如何使用 VBA 将符号/图标格式化为单元格而不使用条件格式