php - 获取 MYSQL 结果为 key=>value 格式,尽管 key 不是字段名

标签 php mysql localization translation

(我真的只需要一些 MYSQL 魔法,但我会解释更多我在做什么)

我正在构建一个翻译系统。我知道一种方法是为我的每种内容类型创建一个翻译表。例如,如果我有一个帖子表,那么我会有一个单独的帖子翻译表:

tbl posts
----------
id
title
content

tbl posts_translations
---------
id
title
content
locale

然后,如果我执行左连接并使用 PHP 获得结果,我将获得我想要的所有数据作为键=>值对,并且我可以在我的应用程序中使用 $row['p_title']

因为我将有多种内容类型要翻译,而不是以这种方式维护字段名称,所以我可以用一个来达到相同的结果吗?

tbl translations
--------------------
id
type      i.e 'posts'
type_id   i.e. posts.id
key       i.e. 'content', 'title'
value     i.e. 'this is a title'
locale

因此,为了获得单个帖子的所有翻译键,我会:

SELECT key, value FROM translations 
WHERE type = 'posts' 
AND type_id = 3

这会给我这样的结果集:

$row = array(
  'key' => 'title',
  'value' => 'This is a title'
)

但我想要的是:

$row['title'] => 'This is the title'

当然我可以执行 PHP 循环来格式化数据,但是 MYSQL 中是否有某些东西可以为我呈现这些数据而无需循环每个结果的开销?

注意

我希望生成的数组键是从列/字段值而不是列/字段名称生成的。

最佳答案

没有单一步骤的方法。

自己写一个类似的子程序

// Given an array of arrays (not ASSOC), use the first column as "key"; second as "value"
function KeyValue($rows)
{
    $kv = array();
    foreach ($rows as $row)
    {
        $kv[$row[0]] = $row[1];
    }
    return $kv;
}

关于php - 获取 MYSQL 结果为 key=>value 格式,尽管 key 不是字段名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32738344/

相关文章:

php - mySQL-显示最近的商店,没有范围或限制

php - AJAX 调用返回成功消息,但发布数据从未插入到数据库中

c# - 如何在 Web Api Controller 中安全地获取本地化字符串?

javascript - 我可以在 JavaScript 中判断访问者的区域设置是遵循美国风格还是世界其他地区的风格吗?

javascript - 创建数据的多维数组不会在 javascript 上生成数组

php - 从 MySQL 上的两个不同表中获取行,两个表之间没有任何关系

php - 将电影名称和年份与电影文件名分开

php - 通过选项卡更新补贴

php - strlen($userData ['comments' ]) > 16777215 太荒谬了吗?

localization - 使用非英语主要语言的 AppStore 提交