(我真的只需要一些MYSQL魔术,但是我会做些更多的解释)
我正在建立翻译系统。我知道一种方法是为我的每种内容类型创建一个翻译表。例如,如果我有一个帖子表,那么我将有一个单独的帖子翻译表:
tbl posts
----------
id
title
content
tbl posts_translations
---------
id
title
content
locale
然后,如果我进行了LEFT联接并使用PHP获得结果,则将所有我想要的数据作为key => value对,并且可以在我的应用程序中用作
$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 - 尽管key不是字段名称,但获取MYSQL的结果为key => value格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32738344/