php怎么去除数组key的前缀?

array (
  0 => 
  array (
    'user_id' => 1113,
    'user_name' => 'cnbander',
    'user_loginpass' => '5277d5d86b46c5c7761dc4e08882ac1f',
    'user_nickname' => 'ban你好',
    'user_mobile' => '13255642019',
    'user_mail' => 'cnbander@gmail.com',
    'user_state' => '正常',
    'user_activate' => '未激活',
    'user_reg_time' => '2019-04-06 18:18:04',
    'user_activate_time' => '1970-01-01 08:00:00',
    'user_deposit' => 1,
    'user_reg_ip' => '127.0.0.1',
    'user_last_ip' => '0.0.0.0',
    'user_invite_code' => '7V9PN',
    'user_province' => 320000,
    'user_city' => 320200,
    'user_id_card' => '15222219841226103X',
    'user_sex' => '女',
    'user_full_name' => '莎士比亚',
    'user_salt' => 977383,
  )
)

怎么能去掉数组key的前缀,我这是一个用户列表数据,通过json返回给客户端,我不想对前端暴露前缀user_,感觉不安全。一下就看出我的表名了。

阅读 5.4k
4 个回答

可以在数据查询时候转成想要的格式

SELECT * FROM `user` WHERE `user_id` = 1113;

写成

SELECT `user_id` AS `id`,`user_name` AS `name` FROM `user` WHERE `user_id` = 1113;

可以实现想要的效果,也可以避免数据再次转换,一举两得

foreach($a as &$v)
{
    $v = array_combine(
        array_map(
            function($k){return str_replace('user_', '', $k);},
            array_keys($v)
        ),
        array_values($v)
    );
}
$a = json_decode(str_replace("user_", '', json_encode($a)),true);
foreach($a as $key => &$val)
{
    $a[$key]['xxx'] = $val['key_xxx'];
    $a[$key]['xxx1'] = $val['key_xxx1'];
    unset($val['key_xxx']);
    unset($val['key_xxx1']);
}

遍历 赋值为新的key 销毁原key
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题