gpt4 book ai didi

php - 在 PHP 中替换数组键中的子字符串

转载 作者:可可西里 更新时间:2023-11-01 00:45:07 24 4
gpt4 key购买 nike

假设您有一个这样的 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;
}

但肯定有更快的方法谁能解决这个问题?目前我想不出一个好的方法,这就是我最终来到这里的方式。

最佳答案

如果您担心性能,请不要使用正则表达式执行琐碎的操作,它们本来就很慢。除此之外,由于您正在主动修改 key ,因此除了重建一个新数组之外别无他法:

$params = [];
foreach($array as $key => $value)
$params[substr($key, 5)] = $value;

在这段代码中,substr($key, 5) 只是去除每个键的前导 user_ 部分,并重建 $params 数组以你需要什么。如果有更快的解决方案,我会感到非常惊讶。

如果您真的想检查数据完整性并且只提取正确前缀的键,问题就会变得更加复杂:

function extractPrefixedElements(array $array, $prefix)
{
$result = [];
foreach($array as $key => $value)
{
list($pre, $newKey) = explode('_', $key, 2);
if($pre == $prefix)
$result[$newKey] = $value;
}
return $result;
}
extractPrefixedElements($array, 'user');

关于php - 在 PHP 中替换数组键中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21162673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com