【发布时间】:2014-02-05 09:54:00
【问题描述】:
假设你有一个这样的 PHP 数组,来自 mysqli 查询:
$array = (
'user_id' => 1
'user_name' => 'User',
'user_email' => 'mail@user.com'
);
现在我想创建一个我的用户类的实例。构造函数接受一个数组,但键应该是“id”、“name”和“email”。
编辑上面的数组的最快方法是什么,以便我得到一个这样的新数组:
$newArray = (
'id' => 1
'name' => 'User',
'email' => 'mail@user.com'
);
$user = new User($newArray);
当然,我可以简单地遍历原始的$array 并像这样使用preg_replace():
$newArray = array();
foreach ($array as $key => $value) {
$newKey = preg_replace('/^user_/', '', $key);
$newArray[$newKey] = $value;
}
但肯定有更快的方法可以解决这个问题?暂时想不出好办法,就这样落到了这里。
【问题讨论】:
-
“更快”是什么意思?你所拥有的是合理的,虽然正则表达式可能是矫枉过正。
-
每个人都说 for/foreach 在 PHP 中非常慢,有时 PHP 中的某些方法比自定义循环更快(例如,array_walk 等)。性能对我来说可能是个问题,因为我在运行时创建了许多用户实例。
-
与内置插件相比它们速度较慢,但有一个问题。 PHP 中的函数调用也很慢,
array_walk& co 将为每个项目调用一次回调。这很可能最终会比foreach更糟。无论如何,在我看来,您问题的答案只是“衡量它”。
标签: php arrays replace array-key