繁体   English   中英

我如何使用php直接从json文件访问值

[英]How can I access the values directly from json file with php

目前,我有以下代码。

<?php
$jsonFP = '[{"Maths":{"earlierMarks":85,"currMarks":90}},{"Physics":{"earlierMarks":80,"currMarks":85}},{"Science":{"earlierMarks":82,"currMarks":85}},{"Social":{"earlierMarks":75,"currMarks":60}}]';

$histData=json_decode($jsonFP,true);
print_r($histData);
$subject_list = array("Social","Maths","Physics");

foreach($subject_list as $subject){
        print_r($histData[$subject]);
        echo "\n";
}
?>

但是这个print_r($ histData [$ subject]); 语句期望这样的索引print_r($ histData [some index] [$ subject]);

如何在循环$ subject_list时动态访问$ histData中的值

如果您对更改输入( $jsonFP )没问题,可以对其进行重组以删除该数组并将其作为一个对象:

$jsonFP = '{"Maths":{"earlierMarks":85,"currMarks":90},"Physics":{"earlierMarks":80,"currMarks":85},"Science":{"earlierMarks":82,"currMarks":85},"Social":{"earlierMarks":75,"currMarks":60}}';

$histData = json_decode($jsonFP, true);

echo $histData['Maths']['earlierMarks']; // prints 85
echo $histData['Social']['currMarks']; // prints 60

由于不再拥有数组,因此可以访问其中的元素而无需编号索引。

根据您的JSON数据,这将有助于提取数据。

$jsonFP = '[{"Maths":{"earlierMarks":85,"currMarks":90}},{"Physics":{"earlierMarks":80,"currMarks":85}},{"Science":{"earlierMarks":82,"currMarks":85}},{"Social":{"earlierMarks":75,"currMarks":60}}]';

$histData=json_decode($jsonFP,true);
print_r($histData);
echo "<br/>";

foreach($histData as $subject){
        print_r($subject);
        echo "<br/>\n";
        foreach($subject as $key => $value){
            echo "subject == $key<br/>\n";
            echo "earlierMarks == ".$value['earlierMarks']."<br/>\n";
            echo "currMarks == ".$value['currMarks']."<br/>\n";
        }
}

如果我明白您的意思,可以使用$subject_list

$jsonFP = '[{"Maths":{"earlierMarks":85,"currMarks":90}},{"Physics":{"earlierMarks":80,"currMarks":85}},{"Science":{"earlierMarks":82,"currMarks":85}},{"Social":{"earlierMarks":75,"currMarks":60}}]';

$histData=json_decode($jsonFP,true);

foreach($histData as $subject_key => $subject_value) {
    if(is_array($subject_value)) {
        foreach($subject_value as $key => $value) {
            //do something with key and value
        }
        continue;
    }
    //do something with $subject_key and $subject_value
}

在这里,您可以访问所有键和值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM