【发布时间】:2019-02-11 17:19:52
【问题描述】:
我正在尝试为每个虚拟页面数据使用 Json 在平面文件 MVC(Slim 和 Twig)上设置简单的本地化。 我获取(将 PHP json-decode 函数设置为 true)一个外部 json 格式的数据文件,但在寻找访问 json 解码数组的最简单方法时遇到问题,因此在代码中访问外部化文本很简单。
我曾经有一个不同语言版本的 xml 平面文件,现在我正在转向 JSON 格式的数据文件。我找到了一种访问数组的方法,但我正在寻找一种更简单的方法来设置 JSON 结构并通过 json_decode 提供的返回数组访问数据。 这是我的 Json 文件:
{
"title": [
{ "fr" : "VERSION FRANCAISE FR" },
{ "en" : "English IN ENGLISH" },
{ "es": “Spanish Version” }
],
"description":[
{ "fr" :"FR DESCRIPTION" },
{ "en" :"ENGlish DESCRIPTION" },
{ "es" :"ES DESCRIPTION" }
],
"keywords":[
{ "fr" :"mot clés, séparés par virgules, mots clés" },
{ "en" :"keywords, ENGlish keywords" },
{ "es" :"en espagnol" }
]
}
这是我用来访问数据的代码:
$file =“meta.json”;
$str = file_get_contents($_SERVER['DOCUMENT_ROOT'].$file)
$meta = json_decode($str, true);
// 访问 $meta 数组
// this works
echo $meta['title'][0]['fr'];
echo $meta['title'][1]['en'];
echo $meta['title'][2]['es'];
// this doesn’t
echo $meta['title']['fr'];
echo $meta['title']['en'];
echo $meta['title']['es'];
也许我可以在数组和标题的顶部有语言,描述如下
{
"fr": [
{ "title" : "VERSION French" },
{ "description" : "French" },
{ "keywords": "french" }
],
"en":[
{ "title" : "VERSION EN" },
{ "description" : "ENGlish IN ENGLISH" },
{ "keywords": "English" }
],
"es":[
{ "title" : "Spanish version" },
{ "description" : "Description ES" },
{ "keywords": "keywords in ES" }
]
}
但同样的问题出现了,我必须写 回声 $meta['fr'][0]['title']; 获得法语标题
所以问题是有办法扭转局面,这样我就可以使用简单而有意义的语法,例如 $meta['fr']['title'];并且不必与数值索引相关。
非常感谢任何帮助。 谢谢!
【问题讨论】:
标签: arrays json localization