为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
鸿蒙传说 2022-06-11 18:57:43
我有两个数组。数组“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 上的简化演示



查看完整回答
反对 回复 2022-06-11
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号