【问题标题】:How to access json data in php?如何在php中访问json数据?
【发布时间】:2021-09-30 06:26:51
【问题描述】:

我有复杂的 json 数据。它可以是以下任何一种格式:

1. {"Physics":{"5b87ceb691":"Motion","5b87ce3e":"Mass"}} //where value itself is a json
2. {"a60a8001805":"Finish chapter 1","a60a8002ab0":"Finish assignments"} //simple key value pair

我想为所有值创建复选框(MotionMassFinish chapter 1Finish assignments 用于上述示例)并且键应该像这些复选框之间的文本(Physics 用于上述示例)(只有当它的值是 json 对象时,键才应该像文本一样,因为 Physics 的值是 json,Physics 应该像文本一样显示,并且在示例 2 中,因为没有值是 json 对象的这样的键, 没有键会像文本一样显示)。

我已经通过以下方式在 javascript 中实现了这一点:

var str = "";
if(Object.keys(data).length !== 0) {
var i = 1;
for (var key in data) {
  if (data.hasOwnProperty(key)) {
    var val = data[key];
    if(typeof val == 'object') {
      str += '<div class = "data_text hidden">' + key + '</div>';
      for (var subKey in val) {
        if (val.hasOwnProperty(subKey)) {
          var subValue = val[subKey];
          str += '<div class="db-checkbox data_options hidden"><input type="checkbox" name="abc" id="' + i + '"><label for="' + i + '">' + subValue + '</label></div>'
          i += 1;
        }
      }
   } else {
    str += '<div class="db-checkbox data_options hidden"><input type="checkbox" name="abc" id="' + i + '"><label for="' + i + '">' + val + '</label></div>'
    i += 1;
   }
  }
}

现在,我想在 php.ini 中做同样的事情。我搜索以找出在 php 中访问 json 数据的方法,但所有这些仅在知道密钥时才有效。 (例如,data-&gt;a60a8002ab0)但我想一般地这样做。不想硬编码任何东西。我怎样才能做到这一点?谢谢。

【问题讨论】:

标签: javascript php html json


【解决方案1】:

在关联模式下尝试json_decode,通过传入第二个参数 true 以便它返回一个您可以循环的关联数组,类似于您的 javascript 代码。

【讨论】:

  • 我是 php 新手,你能给我举个例子吗?
  • 请看下面的答案。
【解决方案2】:
//try each of the following by comment/uncomment
//$myjson = '{"Physics":{"5b87ceb691":"Motion","5b87ce3e":"Mass"}}';
//$myjson = '{"a60a8001805":"Finish chapter 1","a60a8002ab0":"Finish assignments"}';
$myjson = '{"a60a8001805":"Finish chapter 1","a60a8002ab0":"Finish assignments","Physics":{"5b87ceb691":"Motion","5b87ce3e":"Mass"}}';

$json_md_ary = json_decode($myjson,true);
$i=1;
foreach($json_md_ary as $key=>$val){
    if (is_array($val)){
        echo $key, "<br>";
        foreach($val as $k=>$v){
            echo $k, ' => ' ,$v,'<input type="checkbox" name="abc" id="'.$i.'">',"<br>";
            $i++;
        }
    }else{
        echo $key, ' => ' ,$val,'<input type="checkbox" name="abc" id="'.$i.'">',"<br>";
        $i++;
    }
}

【讨论】:

    【解决方案3】:
    $jsondata = '{"Physics":{"5b87ceb691":"Motion","5b87ce3e":"Mass"}}';
    
    $data = json_decode($jsondata);
     
    foreach($data as $key => $val){
       print_r($val);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多