目前我正在尝试使用PHP和JSON,我在处理多维数组时遇到了问题,如下所示:
{"jsonrpc":"2.0","id":"1","result":[
{"type":"subst","lsid":11544,"lstype":"bs","date":20170116,"startTime":840,"endTime":900,"kl":[],"te":[{"id":205,"orgid":162}],"su":[],"ro":[{"id":121,"name":"HOF 3(2)"}]},
{"type":"subst","lsid":11550,"lstype":"bs","date":20170116,"startTime":840,"endTime":900,"kl":[],"te":[{"id":0,"orgid":172}],"su":[],"ro":[{"id":147,"name":"KAMP Turm"}]},
{"type":"subst","lsid":11554,"lstype":"bs","date":20170116,"startTime":745,"endTime":755,"kl":[],"te":[{"id":145,"orgid":179}],"su":[],"ro":[{"id":110,"name":"HS -A"}]},
{"type":"subst","lsid":11565,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":142,"orgid":196}],"su":[],"ro":[{"id":110,"name":"HS -A"}]},
{"type":"subst","lsid":11576,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":185,"orgid":268}],"su":[],"ro":[{"id":117,"name":"HOF 1"}]},
{"type":"subst","lsid":11581,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":291,"orgid":292}],"su":[],"ro":[{"id":120,"name":"HOF 3(1)"}]},
{"type":"cancel","lsid":11860,"date":20170116,"startTime":1220,"endTime":1315,"kl":[],"te":[{"id":186}],"su":[],"ro":[]},
{"type":"subst","lsid":11040,"date":20170116,"startTime":1400,"endTime":1445,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},
{"type":"subst","lsid":11040,"date":20170116,"startTime":1450,"endTime":1535,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},
{"type":"add","lsid":12051,"date":20170116,"startTime":1315,"endTime":1620,"txt":"FK DaZ","kl":[],"te":[{"id":155},{"id":193},{"id":195},{"id":205},{"id":206},{"id":299}],"su":[],"ro":[]},
]}
我想要的是:
{"jsonrpc":"2.0","id":"1","result":[
{"type":"subst","lsid":11040,"date":20170116,"startTime":1400,"endTime":1445,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},
{"type":"subst","lsid":11040,"date":20170116,"startTime":1450,"endTime":1535,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]}
]}
因此,只应显示具有kl
对象id
240的对象。
感谢您的帮助。
答案 0 :(得分:0)
您的JSON中存在错误,并且在将JSON转换为Php数组时出错(
){"type":"add","lsid":12051,"date":20170116,......},
^ remove semicolon
,最终代码为
<?php
$arr = '{"jsonrpc":"2.0","id":"1","result":[{"type":"subst","lsid":11544,"lstype":"bs","date":20170116,"startTime":840,"endTime":900,"kl":[],"te":[{"id":205,"orgid":162}],"su":[],"ro":[{"id":121,"name":"HOF 3(2)"}]},{"type":"subst","lsid":11550,"lstype":"bs","date":20170116,"startTime":840,"endTime":900,"kl":[],"te":[{"id":0,"orgid":172}],"su":[],"ro":[{"id":147,"name":"KAMP Turm"}]},{"type":"subst","lsid":11554,"lstype":"bs","date":20170116,"startTime":745,"endTime":755,"kl":[],"te":[{"id":145,"orgid":179}],"su":[],"ro":[{"id":110,"name":"HS -A"}]},{"type":"subst","lsid":11565,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":142,"orgid":196}],"su":[],"ro":[{"id":110,"name":"HS -A"}]},{"type":"subst","lsid":11576,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":185,"orgid":268}],"su":[],"ro":[{"id":117,"name":"HOF 1"}]},{"type":"subst","lsid":11581,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":291,"orgid":292}],"su":[],"ro":[{"id":120,"name":"HOF 3(1)"}]},{"type":"cancel","lsid":11860,"date":20170116,"startTime":1220,"endTime":1315,"kl":[],"te":[{"id":186}],"su":[],"ro":[]},{"type":"subst","lsid":11040,"date":20170116,"startTime":1400,"endTime":1445,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},{"type":"subst","lsid":11040,"date":20170116,"startTime":1450,"endTime":1535,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},{"type":"add","lsid":12051,"date":20170116,"startTime":1315,"endTime":1620,"txt":"FK DaZ","kl":[],"te":[{"id":155},{"id":193},{"id":195},{"id":205},{"id":206},{"id":299}],"su":[],"ro":[]}]}';
//convert json tp php array
$arr = json_decode($arr, true);
$i = 0;
foreach($arr['result'] as $itr){
if(count($itr['kl']) == 1){
if($itr['kl'][0]['id'] != 240){
//remove index which doesn't contain kl with id 240
unset($arr['result'][$i]);
}
} else {
//remove index which doesn't contain kl with id
unset($arr['result'][$i]);
}
$i = $i+1;
}
//re index array from the beginning
$arr['result'] = array_values($arr['result']);
echo json_encode($arr);
?>
输出
{"jsonrpc":"2.0","id":"1","result":[{"type":"subst","lsid":11040,"date":20170116,"startTime":1400,"endTime":1445,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},{"type":"subst","lsid":11040,"date":20170116,"startTime":1450,"endTime":1535,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]}]}