我有向数组添加值的代码。稍后在我的代码的另一部分中搜索该数组。添加到数组中的值不一定是唯一的,因此在搜索的数组中可能会出现重复的值。从技术上讲,即使搜索数组中存在重复项,我的代码也可以正常工作,并且我将能够找到该值。我只想知道该值是否在被搜索的数组中,并不关心它是在数组中1次还是10000次。
我的问题是,在进行搜索之前,是否首选(出于性能和/或风格原因)对正在搜索的数组执行 array_unique() 。
例如,假设我想搜索这样的数组:
$searchMe = Array("dog", "cat", "mouse", "dog", "dog", "dog");
请注意,“dog”出现了 4 次。如果我想在该数组中搜索值“dog”,它将正常工作,并且我将能够知道它存在。如上所述,我不在乎它出现了多少次,我只想知道它是否存在。
那么我应该在搜索之前先执行此操作,然后再搜索重复数据删除的数组吗?
$searchMe_cleaned = array_unique($searchMe);
也就是说,这会比仅搜索具有重复项的数组更快吗?
请记住,虽然在本例中搜索的数组只有几个元素,但搜索的实际数组可能有数百或数千个元素。
谢谢!
最佳答案
我认为 array_unique
比 in_array
慢,但如果您想多次搜索数组或想节省内存,那么这是有意义的。
另一个选择是使用 array_flip
(这也会删除重复的键),然后使用 isset
或 array_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/