前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >array_combine + array_coumn 关联数组根据某字段,重新设置 key

array_combine + array_coumn 关联数组根据某字段,重新设置 key

作者头像
lukachen
发布2023-10-22 15:53:35
590
发布2023-10-22 15:53:35
举报
文章被收录于专栏:LukaChen BlogLukaChen Blog

需求: 把 $a 数组,用 'a' 字段的值,作为每个 value 的 key

代码语言:javascript
复制
$a = [
    [
        'a' => 'av1',
        'b' => 'bv1',
    ],
    [
        'a' => 'av2',
        'b' => 'bv2',
    ],    
    [
        'a' => 'av3',
        'b' => 'bv3',
    ],    
    [
        'a' => 'av4',
        'b' => 'bv4',
    ],    
    [
        'a' => 'av5',
        'b' => 'bv5',
    ],    
];

常规方案,万事不决 foreach

代码语言:javascript
复制
function array_reset_by_foreach($array, $custom_key) {
    $result = [];
    foreach ($array as $key => $value) {
        // todo 校验完整性,如 key 不存在怎么处理
        $result[$value[$custom_key]] = $value;
    }
    return $result;
}

array_combine + array_column

代码语言:javascript
复制
function array_reset_by_array_combine($array, $custom_key) {
    return array_combine(array_column($array, $custom_key), $array);
}

测试效率

代码语言:javascript
复制
$num = 10000000;

$t_start = microtime(true);
for ($i = 0; $i < $num; $i ++) {
    array_reset_by_array_combine($a, 'a');
}
var_dump(microtime(true) - $t_start);
// float(4.1986689567566)

$t = microtime(true);
for ($i = 0; $i < $num; $i ++) {
    array_reset_by_foreach($a, 'a');
}
var_dump(microtime(true) - $t_start);
// float(5.4154398441315)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求: 把 $a 数组,用 'a' 字段的值,作为每个 value 的 key
  • 常规方案,万事不决 foreach
  • array_combine + array_column
  • 测试效率
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档