回应变量构造而不是内容

时间:2010-05-13 14:10:17

标签: php arrays echo merge

我正在合并两个不同版本的翻译数组。最近的版本有很多变化,超过几千行代码。

为此,我加载并评估了新文件(使用相同的结构和键名),然后加载并评估旧版本,用我们已经翻译的值覆盖数组中新的未翻译值。 / p>

到目前为止一切顺利!

但是,我希望能够回显出这个新合并数组的构造函数,这样我就可以将其剪切并粘贴到新的翻译文件中,并完成工作(除了完成其余的翻译......)。

代码看起来像这样(许多不同的键,而不仅仅是索引):

$lang["index"]["chart1_label1"] = "Subscribed";
$lang["index"]["chart1_label2"] = "Unsubscribed";

旧的..

$lang["index"]["chart1_label1"] = "Subscrito";
$lang["index"]["chart1_label2"] = "Não subscrito";

加载这两个文件之后,我最终得到了一个合并的$ lang数组,然后我想以相同的形式回显,所以它可以被项目使用。

然而,当我做这样的事情时......

foreach ($lang as $key => $value) { 
    if (is_array($value)) {
        foreach ($value as $key2 => $value2) {
            echo "$lang['".$key."']"; // ... etc etc
        }
    }
}

..显然我得到“ArrayIndex”等而不是“$ lang”。如何在没有评估的情况下回显$ lang ..?一旦这个工作,可以添加其余的括号等(我意识到它们已经丢失),但只是想让这个部分先工作。

如果有更好的方法可以做到这一点,那么所有的耳朵也是如此!

感谢。

修改

我真正想要的是this

“注意:与其他三种语法不同,特殊字符的变量和转义序列在单引号字符串中时不会被展开。”

所以甚至不需要逃避。有一天可能派上用场了......关于合并数组,在array_merge()的PHP手册页上有一个很好的递归数组合并函数,它也派上用场了。

感谢投降的人!也爱你。

2 个答案:

答案 0 :(得分:1)

要么转义$:"\$lang",要么使用单引号:'$lang'

请注意,如果您的整个问题归结为“如何在PHP中输出美元符号”,那么您真的不需要发布整页的背景故事

答案 1 :(得分:1)

var_export()功能,但我不明白这个可怕的混乱的目的 这也是...... 手册

为什么不使用gettext - 多语言网站的行业标准?

或至少是其他一些格式,比普通的PHP更可靠? 编程代码旨在自动编写。