【问题标题】:how to get json key value in php?如何在php中获取json键值?
【发布时间】:2021-11-20 07:15:18
【问题描述】:

如何使用 PHP 获取此 JSON 中的所有键值? 我的php代码是:

<?php 
$json = json_decode('{
    "data": {
        "after": [{
            "google.com": "35"
        }, {
            "yahoo.com": "10"
        }, {
            "worldi.ir": "30"
        }, {
            "cnn.com": "554"
        }, {
            "scio.ir": "887"
        }],
        "before": [{
            "bbc.com": "44"
        }, {
            "rtl.com": "15"
        }, {
            "quran.com": "9"
        }, {
            "lap.com": "12"
        }, {
            "search.com": "13"
        }]
    }
}');
foreach($json->data->after as $key => $value) {
    echo "$key<br/>";
    foreach(((array)$json->data->after)[$key] as $val) {
        echo "$val<br/>";
    }
}
?>

结果

0
35
1
10
2
30
3
554
4
887

不显示键值。我想获取所有关键值。例如 google.com、yahoo.com、worldi.ir cnn.com 和 ...

【问题讨论】:

    标签: php arrays json foreach key


    【解决方案1】:

    试试这个:

    <?php 
    $json = json_decode('{
        "data": {
            "after": [{
                "google.com": "35"
            }, {
                "yahoo.com": "10"
            }, {
                "worldi.ir": "30"
            }, {
                "cnn.com": "554"
            }, {
                "scio.ir": "887"
            }],
            "before": [{
                "bbc.com": "44"
            }, {
                "rtl.com": "15"
            }, {
                "quran.com": "9"
            }, {
                "lap.com": "12"
            }, {
                "search.com": "13"
            }]
        }
    }');
    foreach($json->data as $key1 => $value1) {
        echo "$key1: \n";
        foreach($value1 as $key2 => $value2) {
             echo "$key2 -> ";
             foreach($value2 as $key3 => $value3) {
                 echo "$key3 -> $value3\n";
            }
        }
    }
    ?>
    

    输出:

    after: 
    0 -> google.com -> 35
    1 -> yahoo.com -> 10
    2 -> worldi.ir -> 30
    3 -> cnn.com -> 554
    4 -> scio.ir -> 887
    before: 
    0 -> bbc.com -> 44
    1 -> rtl.com -> 15
    2 -> quran.com -> 9
    3 -> lap.com -> 12
    4 -> search.com -> 13
    

    【讨论】:

      【解决方案2】:

      试试这个解决方案:

      <?php
          $json = json_decode('{
              "data": {
                  "after": [{
                      "google.com": "35"
                  }, {
                      "yahoo.com": "10"
                  }, {
                      "worldi.ir": "30"
                  }, {
                      "cnn.com": "554"
                  }, {
                      "scio.ir": "887"
                  }],
                  "before": [{
                      "bbc.com": "44"
                  }, {
                      "rtl.com": "15"
                  }, {
                      "quran.com": "9"
                  }, {
                      "lap.com": "12"
                  }, {
                      "search.com": "13"
                  }]
              }
          }');
      
      
          foreach($json->data->after as $key => $value) {
      
              echo key($json->data->after[$key]);
              
              foreach(((array)$json->data->after)[$key] as $val) {
                  echo "$val<br/>";
              }
          }
      

      【讨论】:

        【解决方案3】:

        after 是一个数组,所以在外部 foreach 循环中返回的$key 只是一个索引(一个整数)。您应该在第二次 foreach 中再次包含 $key =&gt; $value 以获取每个内部对象的键。此外,您可以在第一个 foreach 的 $value 上使用 foreach。您不必再次指定整个关键路径。

        <?php 
        $json = json_decode('{
            "data": {
                "after": [{
                    "google.com": "35"
                }, {
                    "yahoo.com": "10"
                }, {
                    "worldi.ir": "30"
                }, {
                    "cnn.com": "554"
                }, {
                    "scio.ir": "887"
                }],
                "before": [{
                    "bbc.com": "44"
                }, {
                    "rtl.com": "15"
                }, {
                    "quran.com": "9"
                }, {
                    "lap.com": "12"
                }, {
                    "search.com": "13"
                }]
            }
        }');
        foreach($json->data->after as $key => $value) {
            foreach($value as $k => $val) {
                echo "$k<br/>$val<br/>";
            }
        }
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-25
          • 2011-10-27
          • 2021-06-17
          • 1970-01-01
          • 1970-01-01
          • 2014-06-23
          • 1970-01-01
          相关资源
          最近更新 更多