首页 > 解决方案 > 解码json PHP查找仅输出包含POST字符串值的数组

问题描述

我正在尝试制作一个简单的 JSON 检索器。

所以这就是我想要做的。当我输入例如日本时。我将数据发布到 php。我希望它加载它拥有的 json 并在数组中搜索包含这个国家日本的值

将只包含包含此值的结果的较小的缩减 json 数组发送回页面。

关键是国家,示例 json

{
"1": {
        "country": "America",
        "Name": "Harry",
        "Age": "41"
    },
"2": {
        "country": "America",
        "Name": "ben",
        "Age": "40"
    },
"3": {
        "country": "Japan",
        "Name": "taka",
        "Age": "48"
    },
"4": {
        "country": "Japan",
        "Name": "John",
        "Age": "41"
    },
"5": {
        "country": "America",
        "Name": "Ted",
        "Age": "41"
    },
"6": {
        "country": "America",
        "Name": "Simon",
        "Age": "41"
    }
}

var country = $(".country").val();  
$.ajax ({
      url: json.php,
      type: 'POST',
      data: {
          'find': country,
      },
      success: function (results) {
          console.log(results);
      },
      fail: function(data) {
          console.log( data.responseText );
          console.log( 'Request Failed' + data.statusText );
      }
  })
<input name="country" class="country" type="text" placeholder="type country"></input>

<?php
header('content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");
$jsonurl = "data.json";
$json = file_get_contents($jsonurl);
$find = $_POST["find"];
$decode = json_decode($json, true);



$results = array_filter($decode[''], function($country) {
  return $country['country'] == $find;
});


var_dump($results);

任何帮助,将不胜感激...

标签: javascriptphpjqueryhtmljson

解决方案


这是您可以使用它来满足您的要求的代码示例。

$my_json = '{
           "1": {"country": "America","Name": "Harry","Age": "41"},
           "2": {"country": "America","Name": "ben","Age": "40"},
           "3": {"country": "Japan","Name": "taka","Age": "48"},
           "4": {"country": "Japan","Name": "John","Age": "41"},
           "5": {"country": "America","Name": "Ted","Age": "41"},
           "6": {"country": "America","Name": "Simon","Age": "41"}
        }';
    $json_arr =  json_decode($my_json);
    $item = array();
    foreach($j as $k=>$struct) {
        if ('Japan' == $struct->country) {
            $item[$k] = $struct;                
        }
    }
    echo 'Object Array form::';
    echo '---------------------------';     
    print_r(array_values($item));   
    echo 'Json form::';
    echo '---------------------------';     
    echo json_encode(array_values($item));  

推荐阅读