【问题标题】:PHP - Advanced search value in multidimensional arrayPHP - 多维数组中的高级搜索值
【发布时间】:2019-12-09 17:31:47
【问题描述】:

我正在制作一个PHP 页面,可以显示上周的BackupJobs。 我从一个将其转换为JSON 格式的 API 获取所有备份作业。

我被困在我有一个BackupSetID 的地方,并且想将所有与BackupSetID 匹配的BackupJobs 回显到一个页面上。

数组:

{

    "Status": "OK",
    "Data": [
        {
            "BackupJob": [
                "2019-07-30-16-00-00",
                "2019-07-30-17-00-00",
                "2019-07-30-18-00-00",
                "2019-07-30-21-00-00",
                "2019-07-30-23-00-00",
                "2019-07-31-08-00-00",
                "2019-07-31-09-00-00",
                "2019-07-31-10-00-00",
                "2019-07-31-11-00-00",
                "2019-07-31-12-00-00",
                "2019-07-31-13-00-00",
                "2019-07-31-14-00-00",
                "2019-07-31-15-00-00",
                "2019-07-31-16-00-00",
                "2019-07-31-17-00-00",
                "2019-07-31-18-00-00",
                "2019-07-31-21-00-00",
                "2019-07-31-23-00-00",
                "2019-08-01-08-00-00",
                "2019-08-01-09-00-00"
            ],
            "BackupSetID": "1369227132163",
            "Removed": false
        },
        {
            "BackupJob": [
                "2019-07-22-18-00-00",
                "2019-07-22-22-00-00",
                "2019-07-23-10-00-00",
                "2019-07-23-14-00-00",
                "2019-07-23-18-00-00",
                "2019-07-23-22-00-00",
                "2019-07-24-10-00-00",
                "2019-07-24-14-00-00",
                "2019-07-24-18-00-00",
                "2019-07-24-22-00-00",
                "2019-07-25-10-00-00",
                "2019-07-25-14-00-00",
                "2019-07-25-18-00-00",
                "2019-07-25-22-00-00",
                "2019-07-26-10-00-00",
                "2019-07-26-14-00-00",
                "2019-07-26-18-00-00",
                "2019-07-26-22-00-00",
                "2019-07-27-10-00-00",
                "2019-07-27-14-00-00",
                "2019-07-27-18-00-00",
                "2019-07-27-22-00-00",
                "2019-07-28-10-00-00",
                "2019-07-28-14-00-00",
                "2019-07-28-18-00-00",
                "2019-07-28-22-00-00",
                "2019-07-29-10-00-00",
                "2019-07-29-14-00-00",
                "2019-07-29-18-00-00",
                "2019-07-29-22-00-00",
                "2019-07-30-10-00-00",
                "2019-07-30-14-00-00",
                "2019-07-30-18-00-00",
                "2019-07-30-22-00-00",
                "2019-07-31-10-00-00",
                "2019-07-31-14-00-00",
                "2019-07-31-18-00-00",
                "2019-07-31-22-00-00"
            ],
            "BackupSetID": "1369227067996",
            "Removed": false
        }
    ]

}

如何仅显示上周的BackupJobs(例如):BackupSetID = 1369227067996

我试图在值之间进行搜索。但没有结果。

【问题讨论】:

  • BackupSetID 可以有多个匹配项吗?也就是说,可以匹配多个BackupSetID吗?
  • 你希望最终的数组是什么样子的?
  • @vivek_23 是的,可以有多个。
  • @FeikeFalkena 好的。这个键是什么意思"Removed": false?有什么意义吗?
  • 您尝试过简单的foreach 循环吗?你想要的输出是什么?

标签: php arrays json api search


【解决方案1】:

你可以在同一个foreach循环中组合2个条件:

$backupSetID = 1369227067996; // id to search on
$lastWeekTime = date("Y-m-d-h-i", strtotime('sunday last week'));
foreach ($arr["data"] as $e) {
    if ($e["BackupSetID"] == $backupSetID) { // check if ID match
        foreach($e["BackupJob"] as $job)
            if ($job > $lastWeekTime) echo "Found $job \n"; // check for last week
    }
}

【讨论】:

【解决方案2】:

您需要使用 json_decode 函数将 json 字符串转换为数组。

$array = json_decode($data,true);
$backupSetID = "1369227067996";
$required_data = [];
if(count($array)){
    foreach ($array['Data'] as $index => $value) {        
        if($value["BackupSetID"] == $backupSetID){
            $required_data = $value['BackupJob'];
        }
    }
}

所需结果: print_r($required_data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 2017-07-23
    • 2011-10-03
    • 1970-01-01
    • 2019-09-13
    • 2014-06-27
    • 1970-01-01
    相关资源
    最近更新 更多