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

2024-03-02

假设您有一个像这样的 PHP 数组,来自 mysqli 查询:

$array = (
    'user_id' => 1
    'user_name' => 'User',
    'user_email' => '[email protected] /cdn-cgi/l/email-protection'
);

现在我想创建我的用户类的一个实例。构造函数接受一个数组,但键应该是“id”、“name”和“email”。

编辑上面的数组以便我得到如下所示的新数组的最快方法是什么:

$newArray = (
    'id' => 1
    'name' => 'User',
    'email' => '[email protected] /cdn-cgi/l/email-protection'
);

$user = new User($newArray);

当然,我可以简单地循环浏览原始内容$array并使用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');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换 PHP 数组键中的子字符串 的相关文章

  • 通过字符串操作预防 PHP SQL 注入[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中防止 SQL 注入的最佳方法 https stackoverflow com questions 60174 best way to prevent sql injection in php
  • 将结构体数组传递给函数 C++

    抱歉这个菜鸟问题我只是有点困惑 如果我在 main 中有一个结构数组 我想将其传递给函数 struct MyStruct int a int b char c mayarray 5 MyStruct StructArray 10 myFun
  • 根据product_id获取magento产品的浏览次数

    我想在 Magento 的类别列表页面上显示查看计数 这些数据看起来过去可以通过 reports product collection 访问 但我找不到正确访问它的方法 我基本上想提供一个产品 ID 并获取返回给我的所述产品的观看次数 您可
  • C 中的数组地址减法[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的指针算术 https stackoverflow com questions 759663 pointer arithmetic in c Code int main int a 0 1 2
  • 如何从文件中获取整个函数

    好的 我现在正在逐行阅读一个文件 我知道文件中的每个函数名称 因为它是在 XML 文档中的其他位置定义的 应该是这样的 function function name 其中 function name 是函数的名称 我从 XML 文档中获取所
  • 软删除最佳实践(PHP/MySQL)

    Problem 在处理产品和订单的 Web 应用程序中 我想维护前员工 用户 与他们处理的订单之间的信息和关系 我想维护过时产品和包含这些产品的订单之间的信息和关系 然而 我希望员工能够整理管理界面 例如删除前员工 过时的产品 过时的产品组
  • 重用 PDO 语句 var 会使进程崩溃

    我重用一个变量来存储两个不同的 PDO mysql 语句 stmt dbh gt prepare SELECT stmt gt execute stmt dbh gt prepare UPDATE crash here Error in o
  • Monolog:通过邮件发送错误日志会导致每个发送的错误都会收到一封额外的邮件

    对于通过邮件发送的每个错误日志 我们都会收到另一封额外的电子邮件 其中包含 2 行 smtp 调试日志消息 新创建的 symfony 演示 symfony new demo 配置独白以通过邮件发送错误消息 如docs https symfo
  • 静态数组VS。 C++11 中的动态数组

    我知道这是一个非常古老的争论 全世界已经讨论过很多次了 但我目前很难决定在特定情况下应该使用静态数组和动态数组之间的哪种方法而不是另一种方法 实际上 我不会使用 C 11 我会使用静态数组 但我现在很困惑 因为两者可能有相同的好处 第一个解
  • PHP cURL 看不到 /etc/hosts 文件

    我在让 PHP cURL 库识别我在我的文件中创建的别名时遇到了麻烦 etc hosts file 这就是我的 etc hosts现在归档 192 168 0 20 www example dev 在另一端 192 168 0 20 Apa
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • 如果数组包含一个或多个相同值,则合并数组

    我有一个数组数组 a 1 2 3 3 4 5 6 7 8 8 9 9 10 我想合并包含一个或多个相同值的所有数组 所以 a 1 2 3 4 5 6 7 8 9 10 我正在努力寻找一种简洁的方法来解决这个问题 有任何想法吗 我相信这是正确
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • Yii2 组件将数据传递给 __construct

    我有一个库 我想将其用作组件 在配置文件中我这样设置 components gt superLib gt class gt SuperLib construct gt first second Maybe Yii 2 have proper
  • 检查字符串是否编码为 UTF-8

    function seems utf8 str length strlen str for i 0 i lt length i c ord str i if c lt 0x80 n 0 0bbbbbbb elseif c 0xE0 0xC0
  • WordPress 子主题包括包含文件

    我在一家WordPress使用 AMPPS 作为本地主机在我的本地计算机上进行设置 使用 Delta 主题 我创建了一个子主题 delta2 child 初始设置效果很好 但是 我需要更改包含文件夹中名为 home slider php 的
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row

随机推荐

  • 无法通过 RIA 服务访问 EntityObject 类型

    我的实体框架模型是从 SQL Server 数据库生成的 由于我需要从 Silverlight 访问数据库 因此我根据 EF 模型为 RIAServices 生成了一个 DomainService Product是自动生成的之一Entity
  • 一次对多个属性使用“转换为自动属性”

    我发现自己经常使用 Resharper 的 转换为自动属性 重构来删除 C 3 0 之前的样板代码 有什么方法可以将其应用到单个类中的所有属性立刻 ReSharper 可以做到这一点 Options gt Code Cleanup gt U
  • Pygame:display.update() 在时钟延迟后才会更新

    我正在使用 pygametime Clock以较低的 FPS 运行我的游戏 我注意到我的输入似乎需要额外一帧才能生效 我做了一些调试 发现这不是问题pygame event get 而是与pygame display update 我编写了
  • DynamoDBScanExpression withLimit 返回的记录多于限制

    必须列出 DynamoDB 表中的所有记录 无需任何过滤表达式 我想限制记录数量 因此将 DynamoDBScanExpression 与 setLimit 结合使用 DynamoDBScanExpression scanExpressio
  • 在 Visual Studio 2012 中以编程方式指定专用扩展库

    VS 2012 的最新功能之一是能够创建私人延伸画廊 http blogs msdn com b visualstudio archive 2011 10 03 private extension galleries for the ent
  • 异步管道不会将对象数据填充到模板中

    谁能帮我看看我的模板中是否存在语法错误 它不会给出错误 但也不会将数据填充到模板中 div h2 hero h2 h2 hero name details h2 div div div
  • 将额外参数传递给 C# 回调

    如何向以下回调添加额外参数 objXmpp OnLogin new ObjectHandler objXmppArun OnLogin private void objXmppArun OnLogin object sender 是否可以向
  • 如何在 JavaScript 中查找到已知位置的距离

    在浏览器中使用 JavaScript 如何确定从我当前位置到另一个我有纬度和经度的位置的距离 如果您的代码在浏览器中运行 您可以使用 HTML5 地理定位 API window navigator geolocation getCurren
  • Angular JS:如何绑定到 Promise

    我正在尝试将承诺与视图绑定 我不知道你是否可以直接这样做 但这就是我正在尝试做的 有什么想法我做错了吗 注意 源代码在超时方面做了一些设计 并使用了静态数据 但这是为了使代码更易于诊断 EDIT JSFiddle 页面 http jsfid
  • 与 REST-assured 相比,使用 SOAP UI 来自动化 CI 的 REST 服务是否有优势

    我必须在我的项目中自动化 REST API 测试并将其集成到 jenkins 中的现有 CI 中 我即将开始使用 REST assured 进行编码 但是我碰巧看到 SOAP UI REST 教程并了解到 SOAP UI 中有一个 Mave
  • 如何在 C# 中读取二进制文件?

    我有一个存在于文本和二进制图像中的文件 我需要从 0 到 30 位置读取相关文本 而 31 上的位置将是二进制格式的图像 我必须遵循哪些步骤才能解决该问题 目前 我正在尝试使用它来阅读它FileStream 然后我将 FileStream
  • .NET 使用错误的 2.0 machine.config 而不是 4.0

    我在 IIS 7 0 Windows Server 2008 R1 上安装了 NET Web 应用程序 我已在服务器上安装了 NET 4 0 并为 4 0 配置了应用程序池和集成管道 由于某种原因 我收到以下错误 500 19 The co
  • 通过三种方法计算 CCA

    我最近研究了 CCA 的概念 并想在 MATLAB 中实现它 但是有一个现有的 matlab 命令佳能 http in mathworks com help stats canoncorr html展示 我想编写自己的代码 我对其进行了广泛
  • SQL 如何根据现有列的计数为新列创建值?

    我有一个正在读取的临时表 我想查看只有两个等级值的列之一 3 或 4 并构建两个新列 一个保存 3 的计数和另一个用于保存 4 的计数 按特定分组 我的代码看起来像这样 Select Max Counting as Total studen
  • 使用 VPC 配置添加 AWS Lambda 导致访问 S3 时超时

    我尝试从 AWS Lambda 访问 S3 和 VPC 上的资源 但由于我将 AWS Lambda 配置为访问 VPC 因此访问 S3 时超时 这是代码 from future import print function import bo
  • 单元测试覆盖调用 super() 的方法

    我试图找出为重写方法编写单元测试的最佳方法 该方法调用 super 作为最后一步 基本上 我想在基类中使用参数之前对其进行处理 下面是一个方法的示例 Override public JobExecution run Job job JobP
  • 如果没有尾部斜杠,Nginx 会导致 301 重定向

    我在使用 NAT 的虚拟机中运行 nginx 当我从主机访问它时遇到重定向问题 按预期工作 http localhost 8080 test index htm works http localhost 8080 test works 没有
  • Java 中有标准的 Option 或 Nullable 类吗?

    Nullable C 的含义有点不同 但无论如何Option 斯卡拉 和Nullable可以用来表达 有价值或无价值 的概念 例如 当您想在字符串中查找子字符串时 最好返回 Option Int 在 Scala 中 而不是晦涩难懂的 1 作
  • 如何使用dispatchEvent提交无按钮表单

    如果我有一个无按钮的表单 并且我想测试可能的 onsubmit 函数是否返回 true 然后提交它 这是我当前的代码 运行良好 var form document getElementById form var evt document c
  • 替换 PHP 数组键中的子字符串

    假设您有一个像这样的 PHP 数组 来自 mysqli 查询 array user id gt 1 user name gt User user email gt email protected cdn cgi l email protec