为了账号安全,请及时绑定邮箱和手机立即绑定

PHP - 如何查询 JSON 文件的多个值?

PHP - 如何查询 JSON 文件的多个值?

PHP
慕码人2483693 2022-07-22 10:26:09
我正在使用纯 PHP 和 JS 构建 JSON 后端,不涉及 MySQKL,我需要知道是否可以多次查询相同的 JSON 键模式。所以,这是我的 JSON 文件:[    {        "id": "WWJaePyv9a",        "string": "aaa",        "number": 123.89,        "aArray": [            "aa",            "bb",            "cc"        ],        "bool": true,        "geocoords": [            "1.23456",            "-33.76584"        ]    },    {        "id": "vXMv68ze8K",        "string": "bbb",        "number": 1.64,        "aArray": [            "yyy",            "ppp"        ],        "bool": false,        "geocoords": [            ""        ]    },    {        "id": "Imd6oPVYtP",        "string": "ccc",        "number": 0,        "aArray": [            ""        ],        "bool": false,        "file": "",        "geocoords": [            ""        ]    }]这是我的 PHP 脚本:<?php $className = basename(__DIR__) ;/* GET variables */$string = $_GET['string'];$aArray = $_GET['aArray'];$number = $_GET['number'];$bool = $_GET['bool'];if( $bool == 'true'){ $bool = true; } else if($bool == 'false'){ $bool= false; }$data = file_get_contents($className. '.json');$data_array = json_decode($data, true);$results = array();foreach ($data_array as $obj) {    // check value in string    if(isset($string)){        if (strpos($obj['string'], $string) !== false) {            // $results[$obj['id']] = $obj;            array_push($results, $obj);        }    }这可能吗?我是在代码中做错了什么,还是在查询 URL 的语法中做错了什么?
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

我可以使用以下代码解决问题:


if(isset($string)){

        foreach ($string as $k=>$value) { 

            if ($obj['string'] == $value) { 

                array_push($results, $obj); 

            }  

        }

    }


    if(isset($number)){

        foreach ($number as $k=>$value) { 

            if ($obj['number'] == $value) { 

                array_push($results, $obj); 

            }  

        }

    }


    if(isset($aArray)){

        foreach ($aArray as $k=>$value) { 

            if (in_array($value, $obj['aArray'])) {

                array_push($results, $obj);

            }  

        }

    }


    if(isset($bool)){

        foreach ($bool as $k=>$value) { 

            if ($obj['bool'] == $value) { 

                array_push($results, $obj);

            }   

        }

    }

因此,使用这样的 URL:


https://example.com/query.php?string[]=aaa&string[]=ccc&aArray[]=ppp

使我能够得到我正在寻找的结果。


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信