我正在尝试对每个虚拟页面数据使用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" }
]
}
但是同样的问题来了,我不得不写 echo $ meta ['fr'] [0] ['title']; 获得法文标题
所以问题是有办法解决这个问题,因此我可以使用简单的有意义的语法,例如$ meta ['fr'] ['title'];并且不必与数值索引相关。
任何帮助将不胜感激。 谢谢!
答案 0 :(得分:0)
您的数字数组似乎是多余的。如果您的键是唯一的,则像在第一个示例中一样,将它们用作键,除了不将对象包装在[]
-
{
"fr": {
"title" : "VERSION French",
"description" : "French"
"keywords": "french"
}
},
然后,您可以按照以下建议访问它们:$meta['fr']['title']