如何解决PHP JSON - 如何在满足特定条件时选择以下条目
我对 PHP 一窍不通,我真的很难理解如何归档我将要描述的内容。
目标是在条件之后对以下条目进行子选择:type == STATUS AND VALUE == 40 即 ID 的块(3、8、 28,33)
这个 json 是来自 SQL 查询的响应。
{
"data": [
{
"ID": 23,"DATETIME": "1612515739000","VALUE": "327.67","type": "AVGKMKWH","key": "0_202_avgkmKwh","unit": "Km/Kwh","policy": "PERIODIC","device_id": "1245454545454","voucher_id": "12451"
},{
"ID": 1,"DATETIME": "1612515745000","VALUE": "40","type": "STATUS","key": "0_203_status","unit": "",{
"ID": 3,"DATETIME": "1612515754000",{
"ID": 8,"DATETIME": "1612515760000",{
"ID": 14,"DATETIME": "1612515775000","VALUE": "20",{
"ID": 13,{
"ID": 18,"DATETIME": "1612515790000",{
"ID": 25,"DATETIME": "1612515805000",{
"ID": 28,"DATETIME": "1612515813000",{
"ID": 33,"DATETIME": "1612515820000","voucher_id": "12451"
}
]
}
预期回复
{
"data": [
{
"ID": 3,"voucher_id": "12451"
}
]
}
任何建议将不胜感激!
解决方法
此脚本将解决您的问题
<?php
$json = '{
"data": [
{
"ID": 23,"DATETIME": "1612515739000","VALUE": "327.67","type": "AVGKMKWH","key": "0_202_avgkmKwh","unit": "Km/Kwh","policy": "PERIODIC","device_id": "1245454545454","voucher_id": "12451"
},{
"ID": 1,"DATETIME": "1612515745000","VALUE": "40","type": "STATUS","key": "0_203_status","unit": "",{
"ID": 3,"DATETIME": "1612515754000",{
"ID": 8,"DATETIME": "1612515760000",{
"ID": 14,"DATETIME": "1612515775000","VALUE": "20",{
"ID": 13,{
"ID": 18,"DATETIME": "1612515790000",{
"ID": 25,"DATETIME": "1612515805000",{
"ID": 28,"DATETIME": "1612515813000",{
"ID": 33,"DATETIME": "1612515820000","voucher_id": "12451"
}
]
}';
function checkCondition($element) {
$conditions = [
"VALUE" => "40","type" => "STATUS"
];
foreach ($conditions as $conditionKey => $conditionValue) {
if (isset($element[$conditionKey]) && $element[$conditionKey] != $conditionValue) {
return false;
}
}
return true;
}
$dataInArray = json_decode($json,true);
$array = $dataInArray["data"];
print_r(array_filter($array,"checkCondition"));
输出
Array
(
[1] => Array
(
[ID] => 1
[DATETIME] => 1612515745000
[VALUE] => 40
[type] => STATUS
[key] => 0_203_status
[unit] =>
[policy] => PERIODIC
[device_id] => 1245454545454
[voucher_id] => 12451
)
[7] => Array
(
[ID] => 25
[DATETIME] => 1612515805000
[VALUE] => 40
[type] => STATUS
[key] => 0_203_status
[unit] =>
[policy] => PERIODIC
[device_id] => 1245454545454
[voucher_id] => 12451
)
)
首先我使用 json_decode
将 json 转换为数组,然后使用 $conditions
变量添加我的条件,最后我使用 checkCondition
函数并迭代数组并检查我的条件.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。