用另一个数组值覆盖数组中的键

我有两个数组。数组“texts”和数组“dbTexts”。在“dbTexts”中,某个类别的所有文本都在我的数据库中。


记录看起来像这样:


0 => {

   id: 1

   de: "German text"

   en: "English text"

   name: "question"

},

1 => {

   id: 2

   de: "German text"

   en: "English text"

   name: "error"

},

2 => {

   id: 3

   de: "German text"

   en: "English text"

   name: "success"

},

现在我想操作 $texts 数组并为 $dbTexts 数组的每个元素添加一个键/值。


我希望 $texts 的键是 $dbTexts 的“名称”键,值应该是“de”键或“en”键。


我试过的:


$texts = array_map(function ($key) {

     return $texts[$key['name']] = $key[app()->getLocale()];

},$dbTexts->toArray());

app()->getLocale()自动返回“de”或“en”。


所以 $key 将是 $dbTexts 的每个元素。


$texts[$key['name']]应该在第一个示例记录中返回“问题”,并且$key[app()->getLocale()]应该返回每个元素的 de/en 值。


我想要的输出是:


$texts = [

 'question' => 'German text',

 'error' => 'German text',

 'success' => 'German text',

]

整个 de/en 事情对于这个问题并不重要。更重要的是,我想创建 $texts 变量,它将保存每个 $dbText 的“名称”作为键以及来自当前 $dbText 的 de/en 的关联值。


鸿蒙传说
浏览 98回答 1
1回答

慕田峪4524236

这很容易通过一个简单的foreach循环来实现:foreach ($dbTexts->toArray() as $text) {    $texts[$text['name']] = $text[app()->getLocale()];}3v4l.org 上的简化演示另一种解决方案是使用array_column重新索引数组:$texts = array_column($dbTexts->toArray(), app()->getLocale(), 'name');3v4l.org 上的简化演示
打开App,查看更多内容
随时随地看视频慕课网APP