【问题标题】:How can I access index with @ in json如何在 json 中使用 @ 访问索引
【发布时间】:2017-04-09 21:59:26
【问题描述】:

我需要从此“@attributes”获取属性

{
  "@attributes": {
    "docid": "1082530207018916577"
  },
  "track": [
    {
      "@attributes": {
        "id": "0",
        "name": "",
        "lang_code": "da",
        "lang_original": "Dansk",
        "lang_translated": "Danish"
      }
    },
    {
      "@attributes": {
        "id": "5",
        "name": "",
        "lang_code": "nl-BE",
        "lang_original": "Nederlands (België)",
        "lang_translated": "Dutch (Belgium)"
      }
    },
    {
      "@attributes": {
        "id": "2",
        "name": "",
        "lang_code": "en-GB",
        "lang_original": "English (United Kingdom)",
        "lang_translated": "English (United Kingdom)",
        "lang_default": "true"
      }
    },
    {
      "@attributes": {
        "id": "1",
        "name": "",
        "lang_code": "de-DE",
        "lang_original": "Deutsch (Deutschland)",
        "lang_translated": "German (Germany)"
      }
    },
    {
      "@attributes": {
        "id": "4",
        "name": "",
        "lang_code": "id",
        "lang_original": "Indonesia",
        "lang_translated": "Indonesian"
      }
    },
    {
      "@attributes": {
        "id": "6",
        "name": "",
        "lang_code": "pl",
        "lang_original": "Polski",
        "lang_translated": "Polish"
      }
    },
    {
      "@attributes": {
        "id": "7",
        "name": "",
        "lang_code": "pt-BR",
        "lang_original": "Português (Brasil)",
        "lang_translated": "Portuguese (Brazil)"
      }
    },
    {
      "@attributes": {
        "id": "3",
        "name": "",
        "lang_code": "es-419",
        "lang_original": "Español (Latinoamérica)",
        "lang_translated": "Spanish (Latin America)"
      }
    },
    {
      "@attributes": {
        "id": "8",
        "name": "",
        "lang_code": "sv",
        "lang_original": "Svenska",
        "lang_translated": "Swedish"
      }
    }
  ]
}

我的代码:

$xml = simplexml_load_file('http://video.google.com/timedtext?type=list&v='.$video->id_youtube);
$json = json_encode($xml);
$result_array = json_decode($json, TRUE);
$res = "";
foreach ($result_array['track']['@attributes'] as $track) {
    $res .= $track['lang_code'].'<br>';
}
return $res;

PHP 或者 Laravel 无法识别索引“@attributes”,报告:

未定义索引:@attributes

我如何获得 lang_codes

【问题讨论】:

  • 抱歉,这里没有粘贴代码/json。由于某种原因,Stack Overflow 不接受该格式。
  • 你试过json_decode吗?
  • 当然是在我的代码中。我吓坏了kkk
  • 所以,最好将类型,对象更改为数组,而不是使用此索引。
  • 很好!我删除了它

标签: php json xml laravel-5


【解决方案1】:

$result_array['track'] 是一个对象数组。

你必须这样做

foreach($result_array['track'] as $track) {
    $track = (array)$track;
    $res .= $track['@attributes']['lang_code'].'<br>';
}

【讨论】:

  • 有道理!完美运行!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多