簡體   English   中英

如何最有效地檢查數千個值的數組中是否存在單個值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM