PHP:哈希表优化

PHP: Hashtable optimization

我的程序中有两个静态哈希表:

public static $labels = [
    'id' => 'ID',
    'name' => 'Name',
    'email' => 'E-mail',
    'password' => 'Password',
];

public static $columnTypes = [
    'id' => 'number',
    'name' => 'text',
    'email' => 'text',
    'password' => 'text',
];

第一个用于数据库列的标签,第二个用于每种类型(过滤所必需)。

我的问题是我经常需要根据列的标签获取列的类型,这会导致速度问题(哈希表在这方面相当慢,对吧?)。

我的方法如下:

  1. 键入哈希表 label => type 这很糟糕,因为我必须重复一遍并且不支持其他语言
  2. 在运行时在静态内容中创建 label => type 哈希表(这在 php 中可行吗?)

对于这个问题是否有更好的方法或最佳实践,第二种方法是否可能 php? (也许有一个小例子;)

在class构造函数中调用array_flip。为避免重复,请检查翻转数组是否已设置。

class YourClass {
    public static $labels = [
        'id' => 'ID',
        'name' => 'Name',
        'email' => 'E-mail',
        'password' => 'Password',
    ];
    public static $labels_flipped = null;

    public function __construct() {
        if (!$labels_flipped) {
            $labels_flipped = array_flip($labels);
        }
        ...
    }
}

如果您需要获取具有值的键,那么您可以使用array_search() or array_keys()

如果您需要在 large 数组中执行这种查找 a big 次,那么建议翻转键和值(使用 array_flip()) then use isset() or access the value using [].

要得到真正的提升,上一段中的largebig要以千计。否则,专注于真正需要优化的优化:数据库、磁盘访问、远程 API 等。