PHP:哈希表优化



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

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 中是否可行?(也许有一个小例子;)

在类构造函数中调用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()array_keys()

如果您需要在大型数组中多次执行此类查找,则建议翻转键和值(使用array_flip()(,然后使用isset()或使用[]访问值。

为了得到真正的改进,上面段落中的大和应该以千为单位。否则,请专注于确实需要优化的优化:数据库、磁盘访问、远程 API 等。

最新更新