php 数组原有键加字符,在PHP中替换数组键中的子字符串

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

当然,我可以简单地遍历原始的$数组并使用preg_replace(),如下所示:

$newArray = array();

foreach ($array as $key => $value) {

$newKey = preg_replace('/^user_/', '', $key);

$newArray[$newKey] = $value;

}

但肯定有更快的方法可以解决这个问题吗?目前我想不出一个好方法,这就是我在这里结束的方式.

解决方法:

如果你担心性能,不要用正则表达式进行琐碎的操作,它们本身就很慢.除此之外,由于您正在积极修改密钥,除了重建新数组之外别无他法:

$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,arrays,replace,array-key

来源: https://codeday.me/bug/20190831/1773459.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值