在 PHP 中创建字典

Creating a dictionary in PHP

我在变量 $appLangs 中的数据为:

[{"id":"1","site":"7","elemId":"navbar_title","en":"Home","de":"Zuhause","fr":"accueil"},{"id":"2","site":"7","elemId":"home_untilNextTime","en":"Until Next Time","de":"Bis zum n\u00e4chsten Mal","fr":"Jusqu'\u00e0 la prochaine fois"}]

我如何创建一个数组,它会给我一个数组结果:

[{navbar_title :{
 “en” : "Home",
 “de” : "Zuhause"
}},{home_untilNextTime :{
 “en” : "Until Next Time",
 “de” : "Bis zum n\u00e4chsten Mal"
}}]

PHP 的新手,这是我尝试过的方法,结果很奇怪:

$appLangs = sql_get_record('g_appLanguages', false, true);
foreach ($appLangs as $value) {             
    $json[$value["elemId"]] = (object) ['en' => $value["en"], 'de' => $value["de"]];    
    echo json_encode($json);        
}

您只需解码输入并将其映射到您的新结构。无需转换为对象或 "in-itteration-json-encoding".

例如:

$input = '[{"id":"1","site":"7","elemId":"navbar_title","en":"Home","de":"Zuhause","fr":"accueil"},{"id":"2","site":"7","elemId":"home_untilNextTime","en":"Until Next Time","de":"Bis zum n\u00e4chsten Mal","fr":"Jusqu\'\u00e0 la prochaine fois"}]';
$raw = json_decode($input, true);

$output = array_map(function ($entry) {
    return [
        'en' => $entry['en'],
        'de' => $entry['de']
    ];
}, array_column($raw, null, 'elemId'));

echo json_encode([$output], JSON_PRETTY_PRINT);

// [
//     {
//         "navbar_title": {
//             "en": "Home",
//             "de": "Zuhause"
//         },
//         "home_untilNextTime": {
//             "en": "Until Next Time",
//             "de": "Bis zum n\u00e4chsten Mal"
//         }
//     }
// ]

演示https://ideone.com/f3ZeTj


注意:我不明白为什么要将可直接使用的对象包装在数组中。