我有两个数组。数组“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 的关联值。
1 回答

慕田峪4524236
TA贡献1875条经验 获得超5个赞
这很容易通过一个简单的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 上的简化演示
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报
0/150
提交
取消