【问题标题】:Best way to convert keys in PHP在 PHP 中转换密钥的最佳方法
【发布时间】:2017-03-12 02:34:05
【问题描述】:

我正在从 mysql 数据库中检索数据,如下面的数组:

$data = [
  0 => [
    'id' => 1, 
    'Benutzer' => 'foo', 
    'Passwort' => '123456', 
    'Adresse' => [
      'Strasse' => 'bla', 'Ort' => 'blubb'
    ],
    'Kommentare' => [
      0 => ['Titel' => 'bar', 'Text' => 'This is great dude!'],
      1 => ['Titel' => 'baz', 'Text' => 'Wow, awesome!']
    ]
  ],
]

这样的数据应存储在 mongo 数据库中,因此我想用来自配置文件或语言文件('Benutzer' -> 'username')的翻译字符串替换键名。

我真的必须遍历数组并替换键还是实现这一目标的更好方法?

【问题讨论】:

  • 还有其他方法,例如将 array_combinearray_map 一起使用,但相信我,与简单的 foreach 循环相比,它会使您的代码更加复杂且可读性更低。
  • 是的,你是对的。但这是用于具有大量记录的导入。所以一个 foreach 循环是非常昂贵的。我已经在使用array_combinearray_map。但是很难处理数组值。
  • 我认为没有一种解决方案不会至少遍历所有数组项一次。甚至像 array_map 这样的 php 数组函数也在内部完成。
  • 如果您的数组太大,您可能希望将其分成块并分别处理每个块。最好的办法是将每个块推入队列,让排队系统在后台处理它们。

标签: php mysql arrays mongodb laravel


【解决方案1】:

如果您不想遍历数组,则可以使用 select() 函数更改查询本身中的列名。

考虑到您的型号名称是Client,那么您的查询将是:

Client::select('Benutzer as username', '...') // you can use `trnas()` function here also
      ->get()

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2010-10-12
    • 1970-01-01
    • 2013-09-26
    • 2011-05-01
    • 2020-04-26
    • 2010-11-26
    • 1970-01-01
    • 2011-11-18
    相关资源
    最近更新 更多