英文:
alternative to in_array for unicode arrays
问题
in_array函数在处理大数组时非常慢,因为它进行线性搜索。
一个更快的替代方法是搜索数组的键。
因此,对于大数组来说,
if (isset($array[$val]))
比
if (in_array($val,$array))
要快得多。
然而,如果使用Unicode作为数组键将不起作用。
是否有一种替代方法可以在不使用类似in_array或array_search这样的线性搜索或生成像md5这样的哈希值的情况下实现这一点?
英文:
The in_array function is very slow for large arrays due to doing a linear search.
A faster alternative is to search the key of the array.
Thus
if (isset($array[$val]))
is much faster than
if (in_array($val,$array))
for large arrays. However using unicode as array keys will not work.
Is there an alternative way to do this for unicode without resorting to linear searches such as in_array or array_search or generating hashes like md5?
答案1
得分: 2
可以使用任何可以转换为字符串的内容作为键。
参考:https://stackoverflow.com/questions/10696067/characters-allowed-in-php-array-keys
但显然,有些人在其数组键中使用特殊字符时可能会遇到问题。我敢打赌,如果您在存储键时使用不同的编码,而在搜索时使用硬编码的 Iso 编码 PHP 脚本搜索键,可能会出现这种情况。这只是一个例子,有数十种类似的情景。
为了确保始终使用相同的编码,我建议使用rawurlencode。
英文:
You can use anything as key which can be converted into a string.
Compare: https://stackoverflow.com/questions/10696067/characters-allowed-in-php-array-keys
But nevertheless apparently some poeple have problems with special characters in their array-keys. I bet this may be the case if you use different encodings at the time you store the key and when you search for it. For example your keys come from a database using UTF-8, but when you search you have the key you search for hardcoded in a Iso-encoded PHP-script. This is just an example, there are dozens of scenarios like this.
To ensure you always use the same encoding I would use rawurlencode.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论