arrays - 从 php 访问 json_decode 数组值
问题描述
我正在尝试使用 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']; 并且不必与数值索引相关。
任何帮助是极大的赞赏。谢谢!
解决方案
您的数字数组似乎是多余的。如果您的键是唯一的,则将它们用作第一个示例中的键,除非不将对象包装在[]
-
{
"fr": {
"title" : "VERSION French",
"description" : "French"
"keywords": "french"
}
},
然后,您可以按照您的建议访问它们:$meta['fr']['title']
推荐阅读
- django - saveloan() 得到了一个意外的关键字参数“loanname”
- php - 如何在 symfony 中编辑上传的图像
- javascript - 在 sweetalert onOpen 函数中使用路由器推送 - Vue2
- security - 是后门类型的漏洞还是恶意软件?
- scala - spark解析内部json值字段并创建一个新列
- verilog - Verilog中的输出和输出逻辑有什么区别?
- typescript - Typescript 在运行时给出错误,但在编译时没有
- javascript - Webpack:未捕获的 ReferenceError:未定义要求
- c# - 使用 BinaryReader/Writer 的 C# Socket 从读取器获取错误数据
- html - 在 PC 和移动视图中将背景图像的高度调整为 DIV