【问题标题】:List part of data in JSON file using php or javascript [closed]使用 php 或 javascript 列出 JSON 文件中的部分数据 [关闭]
【发布时间】:2022-02-01 17:53:08
【问题描述】:

有人知道如何使用 php 或 javascript 从 json 文件中列出部分/部分数据吗?

例如如果我使用 sql 我必须做代码

select email from employees where name='Shyam'

但是对于 json,我不知道该怎么做。

{"employees":[  
    {"name":"Shyam", "email":"shyamjaiswal@gmail.com", "job":"police"},  
    {"name":"Bob", "email":"bob32@gmail.com", "job":"athelic"},  
    {"name":"Jai", "email":"jai87@gmail.com", "job":"king"}  
]}  

通过参考上面的数据,我只想使用 json 文件中的 php/javascript 选择 name=shyam 的电子邮件。

【问题讨论】:

  • employees 数组上使用filter()(或find() - 如果您只想要第一个匹配项)
  • 使用JSON.parse将JSON转换为JS,然后你就可以像普通的JS对象一样与之交互了。
  • @RoryMcCrossan 你能展示我的数据的代码示例吗?
  • @evolutionxbox 怎么样?
  • @botstudio,你实际上错过了你的问题的一大要点。在你的 JS 或 PHP 程序中如何获取数据?

标签: javascript php jquery json ajax


【解决方案1】:

在 PHP 中你可以做这样的事情。

$json = '{"employees":[  
    {"name":"Shyam", "email":"shyamjaiswal@gmail.com", "job":"police"},  
    {"name":"Bob", "email":"bob32@gmail.com", "job":"athelic"},  
    {"name":"Jai", "email":"jai87@gmail.com", "job":"king"}  
]} ';

$jsonArray = json_decode($json, true);
$emails = [];

foreach ($jsonArray['employees'] as $item){
    if ($item['name'] == "Shyam") {
        $emails[] = $item['email'];
    }
}

【讨论】:

【解决方案2】:

使用 Javascript 你可以做类似的事情:

const data = {"employees": [  
  {"name":"Shyam", "email":"shyamjaiswal@gmail.com", "job":"police"},  
  {"name":"Bob", "email":"bob32@gmail.com", "job":"athelic"},  
  {"name":"Jai", "email":"jai87@gmail.com", "job":"king"}  
]};

const result = data.employees.filter(employe => employe.name === "Shyam");
console.log(result);

而使用 PHP 你可以做到这一点:

$data = json_decode('{"employees": [  
  {"name":"Shyam", "email":"shyamjaiswal@gmail.com", "job":"police"},  
  {"name":"Bob", "email":"bob32@gmail.com", "job":"athelic"},  
  {"name":"Jai", "email":"jai87@gmail.com", "job":"king"}  
]}', true);

$result = array_filter($data['employees'], function ($employee) {
    return $employee['name'] === 'Shyam';
});
var_dump($result);

【讨论】:

    【解决方案3】:

    这样想(JS)?

          const getEmail = (json, name) => {
            const row = json.employees.find(e => e.name === name);
            return row ? row.email : null;
          }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多