【问题标题】:Accessing json_decode array values from php从 php 访问 json_decode 数组值
【发布时间】: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


    【解决方案1】:

    您的数字数组似乎是多余的。如果您的键是唯一的,则将它们用作第一个示例中的键,除非不将对象包装在 [] -

    {
      "fr": {
        "title" : "VERSION French",
        "description" : "French"
        "keywords": "french"
      }
    },
    

    然后您可以按照您的建议访问它们,使用:$meta['fr']['title']

    【讨论】:

    • 谢谢你,我认为方括号是强制性的!就像一个魅力和简单的作品,让我的案子继续工作!干杯
    猜你喜欢
    • 2018-11-05
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多