【发布时间】:2018-06-28 11:23:19
【问题描述】:
我从数据库中获取翻译并希望在 Javascript 对象中生成它,例如:
var Lang = {
eng: {
txtUserName: 'Username',
txtLogout: 'Logout'
},
dnk: {
txtUserName: 'Brugernavn',
txtLogout: 'Afslut'
}
}
我陷入了循环,得到的结果不是我需要的。 这是我的 PHP:
var Lang = {
<?php
$allLangs = $this->params->getLanguages;
foreach ($allLangs as $allLang) :
echo $allLang->lang_code . ': ';
echo '{';
foreach ( $translationsall as $translation ) :
if ( $translation['it_text'] == 'txtUserName' ) :
for ( $i = 1; $i <= 1; $i++ ){
var_dump($translationsall[$i]);
}
endif;
endforeach;
echo '},';
echo "\r\n";
endforeach;
?>
}
这就是我得到的:
var Lang = {
dnk: {array(2) {
["it_text"]=>
string(8) "appTitle"
["it_name"]=>
string(3) "VMS"
}
array(2) {
["it_text"]=>
string(8) "appTitle"
["it_name"]=>
string(3) "VMS"
}
},
eng: {array(2) {
["it_text"]=>
string(8) "appTitle"
["it_name"]=>
string(3) "VMS"
}
array(2) {
["it_text"]=>
string(8) "appTitle"
["it_name"]=>
string(3) "VMS"
}
}
如何编辑我的循环以获得我需要的结果?
也许有更聪明的方法来生成 Lang 对象?
而且,忘了说我只需要很少的翻译,这就是为什么我在 PHP 中有这个的原因:
if ( $translation['it_text'] == 'txtUserName' ) :
//stuff
endif;
欢迎任何想法:)
这是我从 var_dump($translationsall) 得到的:
array(2748) {
[0]=>
array(2) {
["it_text"]=>
string(8) "appTitle"
["it_name"]=>
string(3) "CMS"
}
[1]=>
array(2) {
["it_text"]=>
string(8) "appTitle"
["it_name"]=>
string(3) "CMS"
}
[2]=>
array(2) {
["it_text"]=>
string(9) "txtLogout"
["it_name"]=>
string(6) "Afslut"
}
[3]=>
array(2) {
["it_text"]=>
string(9) "txtLogout"
["it_name"]=>
string(6) "Logout"
}
[4]=>
array(2) {
["it_text"]=>
string(10) "btnRefresh"
["it_name"]=>
string(9) "Hent Igen"
}
[5]=>
array(2) {
["it_text"]=>
string(10) "btnRefresh"
["it_name"]=>
string(7) "Refresh"
}
}
【问题讨论】:
-
使用
json_encode()是构建输出数据结构的更好方法吗? -
我不明白的一件事是您循环遍历语言并遍历 $translationsall 中的所有值。两者之间似乎没有联系 - 特别是因为您的 $translationsall 转储没有语言指示符。
-
我更改了查询,因此翻译结果有一个 lang_code,因此我创建了新问题。你可以在这里找到它:stackoverflow.com/questions/51096078/…
标签: php nested-loops