[英]How can I most efficiently check for the existence of a single value in an array of thousands of values?
由於一系列奇怪的情況,我需要確定一個值是否存在於已知集合中,然后采取行動。 考慮:
包含的文件將如下所示:
// Start generated code
$set = array();
$set[] = 'foo';
$set[] = 'bar';
// End generated code
然后另一個文件將如下所示:
require('that_last_file.php');
if(in_array($value, $set)) {
// Do thing
}
如前所述,數組的創建將來自生成的代碼——一個進程將創建一個 PHP 文件,該文件將包含在if
語句的上方require
。
我應該多關心這個爛攤子的大小——無論是字節數還是數組值? 它可以輕松達到 5,000 個值。 我應該多關心 5,000 值數組的開銷? 除了在數組上使用in_array
之外,還有更有效的方法來搜索值嗎? 通過require
包含一個 5,000 行的文件有多痛苦?
我知道最終有更好的方法可以做到這一點,但我的限制是集合創建和邏輯必須在包含的 PHP 文件中。 有一些奇怪的技術限制會阻止其他選項(即——數據庫查找)。
更快的方法是:
if (array_flip($set)[$value] !== null) {
// Do thing
}
一個 5000 值的數組確實不是那么糟糕,但如果它只是字符串的話
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.