【问题标题】:Compare Values in multiple arrays比较多个数组中的值
【发布时间】:2022-01-19 04:35:08
【问题描述】:

我已经坚持了几个小时试图解决这个问题。

我正在使用 cURL 和 PHP 从 API 获取数据,然后在表格中显示该数据。我有我的表格设置来显示比赛的开始位置、他们完成的位置、人的姓名以及他们完成的距离。

在我的专栏中,他们完成的 API 落后了多少,并没有考虑到有人可能无法完成比赛中的所有圈数。例如,第 2 名落后领先者 4.285 秒,但第 14 名落后领先者 0.929 秒,因为他们落后于领先者和第二名之间的一圈。

我正在尝试找出未完成所有圈数的第一个位置(这可能是每场比赛的不同位置),然后是第一个人落后一圈后的每个位置。如果这有意义的话。

以下是 API 响应,我正在尝试比较来自 ResultTime 键的数据。

{
    "RequestValid": 1,
    "ItemsReturned": 1,
    "Classes": [
        {
            "Races": [
                {
                    "RaceName": "Feature",
                    "RaceType": "Feature",
                    "RaceOrder": 1,
                    "RaceLevel": "A",
                    "RaceLaps": 50,
                    "RaceTime": "00:27:39.532",
                    "RacePresenter": "",
                    "RaceNotes": "",
                    "RaceStatus": "Completed",
                    "Results": [
                        {
                            "ResultPlace": 1,
                            "ResultStart": 4,
                            "ResultTime": "1659.532",
                            "ResultCarNum": "49",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 2,
                            "ResultStart": 2,
                            "ResultTime": "1663.817",
                            "ResultCarNum": "1",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 3,
                            "ResultStart": 7,
                            "ResultTime": "1664.368",
                            "ResultCarNum": "28",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 4,
                            "ResultStart": 13,
                            "ResultTime": "1664.544",
                            "ResultCarNum": "1T",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 5,
                            "ResultStart": 1,
                            "ResultTime": "1665.218",
                            "ResultCarNum": "7",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 6,
                            "ResultStart": 8,
                            "ResultTime": "1666.842",
                            "ResultCarNum": "01",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 7,
                            "ResultStart": 10,
                            "ResultTime": "1668.640",
                            "ResultCarNum": "14",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 8,
                            "ResultStart": 15,
                            "ResultTime": "1670.214",
                            "ResultCarNum": "8",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 9,
                            "ResultStart": 21,
                            "ResultTime": "1672.037",
                            "ResultCarNum": "111V",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 10,
                            "ResultStart": 9,
                            "ResultTime": "1674.171",
                            "ResultCarNum": "44",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 11,
                            "ResultStart": 17,
                            "ResultTime": "1674.247",
                            "ResultCarNum": "16",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 12,
                            "ResultStart": 19,
                            "ResultTime": "1674.732",
                            "ResultCarNum": "72",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 13,
                            "ResultStart": 23,
                            "ResultTime": "1675.363",
                            "ResultCarNum": "99B",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 14,
                            "ResultStart": 16,
                            "ResultTime": "1660.461",
                            "ResultCarNum": "10",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 15,
                            "ResultStart": 24,
                            "ResultTime": "1663.480",
                            "ResultCarNum": "B1",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 16,
                            "ResultStart": 22,
                            "ResultTime": "1666.772",
                            "ResultCarNum": "7R",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 17,
                            "ResultStart": 6,
                            "ResultTime": "1669.867",
                            "ResultCarNum": "20",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 18,
                            "ResultStart": 14,
                            "ResultTime": "1673.277",
                            "ResultCarNum": "111",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 19,
                            "ResultStart": 12,
                            "ResultTime": "1387.076",
                            "ResultCarNum": "19R",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 20,
                            "ResultStart": 20,
                            "ResultTime": "1353.423",
                            "ResultCarNum": "0H",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 21,
                            "ResultStart": 5,
                            "ResultTime": "1340.342",
                            "ResultCarNum": "11",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 22,
                            "ResultStart": 11,
                            "ResultTime": "1284.877",
                            "ResultCarNum": "76",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 23,
                            "ResultStart": 3,
                            "ResultTime": "962.947",
                            "ResultCarNum": "39",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 24,
                            "ResultStart": 18,
                            "ResultTime": "239.697",
                            "ResultCarNum": "23B",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        },
                        {
                            "ResultPlace": 25,
                            "ResultStart": 25,
                            "ResultTime": "156.942",
                            "ResultCarNum": "42",
                            "ResultDNF": 0,
                            "ResultDNS": 0,
                            "ResultDQ": 0,
                        }
                    ]
                },
        ]
}

更新 2 以显示代码

foreach ($raceresults as $raceresult) {
//Checking if race has a time
    if ($raceresult['ResultTime'] == "0.000") {
        $racetime = "No Time";
        $laptimebehindpadded = "No Time";
    } else {
        //Getting Time of Race
        $racetime = $raceresult['ResultTime'];
        //Taking leaders overall time and subtracting each position to get time behind.
        $laptimebehind = $quicktime - $racetime;
        //Converting time behind to show 3 decimal places
        $laptimebehindpadded = sprintf('%0.3f', $laptimebehind);
    }
}

echo $laptimebehindpadded;

【问题讨论】:

  • 我不确定你的代码是什么。您有一个变量 $quicktime 未在您提供的代码中的任何地方定义。您也不会从获取现有数组变量并将其分配给另一个具有不同名称的变量(即)中获得任何好处。 $racetime = $raceresult['ResultTime'];
  • 也许这将有助于澄清你实际试图推断的内容,除了我已经指出的那样,任何时候有人完成了

标签: php curl


【解决方案1】:

有一个 $priorResultTime = 0 和一个 $lapBehind = 0。在 foreach() 遍历结果数组时,将 $result['ResultTime'] 与 $priorResultTime 进行比较。

$priorResultTime = 0;
$lapBehind = 0;

foreach(... as $result) {
  if ($result['ResultTime'] < $priorResultTime) {
      $lapBehind++;
  }
  $priorResultTime = $result['ResultTime'];
}

您的输出现在可以利用 $lapBehind 变量,并指示赛车手落后领先者多少圈,以及他们的相对时间。

【讨论】:

  • 我想我大部分时间都在关注你。目前我正在从数组中获取 $result['ResultTime'] ,然后比较第一名时间之间的时间。我已经用你的代码代替了它,但我仍然只是得到 $result['ResultTime']。
  • 必须查看您的代码,但这假设当您输出任何内容时,需要引入这种新的 lap 概念。如果您从比赛时间中减去第一名的时间,那么您需要改进该输出,而不是使用“+xxx.xxx”或任何您的节目,如果参与者被圈($lapBehind > 0)那么您将显示“$ lapBehind laps +xxx.xxx"
  • 查看更新 2 以获取未经您编辑的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 2017-10-17
  • 2020-12-30
  • 2022-12-18
  • 1970-01-01
相关资源
最近更新 更多