我有看起来像这样的一个键值表的数组(从DB直来):减少阵列深入
$application_strings = array(
array('key' => 'building_type', 'value' => 'Building Type'),
array('key' => 'application', 'value' => 'Application'),
);
/* would print_r like so:
Array(
[0] => Array([key] => 'building_type', [value] => 'Building Type'),
[1] => Array([key] => 'application', [value] => 'Application')
)
*/
,并想将它转化成类似
$strings = array(
'building_type' => 'Building type',
'application' => 'Application',);
/* would print_r like so:
Array(
[building_type] => 'Building Type',
[application] => 'Application'
)
*/
我目前的做法是这样的:
$strings_statement = DB::getDB()->prepare(
"SELECT `key`, `value` FROM `strings`
WHERE `lang` = (SELECT `lang` FROM `sites` WHERE `key`=:key)");
$strings_statement->execute(array(':key' => 12345));
$application_strings = $strings_statement->fetchAll(PDO::FETCH_ASSOC);
$strings = array();
foreach($application_strings as $string) {
$strings[$string['key']] = $string['value'];
}
可以这样做短/更好?
一个更好的解决方案是'SELECT'输出你想要的而不是重新安排PHP中的数据集。你能显示查询吗? – Martin 2012-07-19 14:16:58
如果你用你的方法做'print_r($ strings,true)' - 你会得到什么? – ethrbunny 2012-07-19 14:23:34
添加了上面的查询。如果我可以相应地修改查询,那就太好了。但是,由于我不太擅长SQL,因此我首先在PHP端进行了修改。 – fragmentedreality 2012-07-19 14:24:17