【问题标题】:Trying to loop and display a JSON file with PHP尝试使用 PHP 循环并显示 JSON 文件
【发布时间】:2019-05-30 21:10:54
【问题描述】:

我有一个 JSON 文件,里面有一个数组。我想在 JSON 的每个元素内循环并显示它。我可以成功地做到这一点,但我想在使用 foreach 循环时引用这样的字段:$value["pessoa_id"];

当我这样做时,我会显示它,但显示后会收到一条消息:“注意:未定义的索引:名称”,就像它试图再次访问它一样。

这是 JSON 文件:

{"Clientes": {
      "Pessoa": [
        {"pessoa_id" : 1,  "nome": "INDUSTRIAL JAVARI LTDA",  "endereco": "ENGENHO SANTA TERESA"},
        {"pessoa_id" : 2,  "nome": "AGROISA-AGRO IND. TRAVESSIA S/A",  "endereco": "FAZENDA TRAVESSIA S/N"}
      ],
      "Clientes": [
        {"cliente_id" : 1,  "loja" : 1,  "cliente" : 1,  "tpcli": "J",  "pontoref": ""},
        {"cliente_id" : 2,  "loja" : 1,  "cliente" : 2,  "tpcli": "J",  "pontoref": ""}
      ]
    }
  }

还有php代码:

$jsondata = file_get_contents("clitest.json");
$json = json_decode($jsondata, true);
foreach ($json as $key => $value){
    foreach ($value as $key => $val){
      foreach ($val as $key => $v){
          echo $v["nome"] . " " . $v["endereco"];
          echo "<br>";
        }
    }
}

我希望能够在一个 foreach 中查看它是“Pessoa”还是“Clientes”,并通过按名称获取字段来循环遍历它。

【问题讨论】:

    标签: php arrays json loops


    【解决方案1】:

    您还可以遍历第二个数组 Clientes。您可以直接访问数组并且只迭代该数据:

    $jsondata = file_get_contents("clitest.json");
    $json = json_decode($jsondata, true);
    $pessoa = $json["Clientes"]["Pessoa"];
    foreach ($pessoa as $key => $value){
      echo $value["nome"] . " " . $value["endereco"];
      echo "<br>";
    }
    

    更新:

    如果您需要/想要像您在问题中所做的那样遍历整个数据集,您可以检查您是否在对象的正确元素中,并且仅迭代并输出数据。

    $jsondata = file_get_contents("clitest.json");
    $json = json_decode($jsondata, true);
    foreach ($json as $key1 => $value){
      if ($key1 == "Clientes") {
        foreach ($value as $key2 => $val){
          if ($key2 == "Pessoa") {
            foreach ($val as $key3 => $v){
              echo $v["nome"] . " " . $v["endereco"];
              echo "<br>";
            }
          }
        }
      }
    }
    
    

    【讨论】:

    • 客户的东西呢?我希望能够查看是否在 Pessoas 或 Clientes 上并获取他们的 ID 和字段。
    • 我添加了另一个示例,该示例使用问题中的循环,并检查键是否等于特定名称,然后仅迭代内容。您可以根据自己的需要进行修改。
    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 2016-01-28
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多