【问题标题】:Check if specific key value is appeared in array 3 times检查特定键值是否出现在数组中 3 次
【发布时间】:2021-09-05 20:32:29
【问题描述】:

我有一个数组,我想检查 start_time 和 end_time 是否具有相同的值,并且 start_time 和 end_time 都发生了 3 次,循环应该返回 false。

例如:在下面的数组中,我在数组中有数组,具有 id (4,5,6) 的数组具有相同的 start_time 和 end_time 值,下面三个具有 id (8,9,10) 的数组具有相同的值. 只要两个值都匹配,它就会认为是一个增量,具有 id (3) 的数组具有与 id (4,5,6) 相同的 start_time 值,但不会考虑,因为 end_time 不同。

任何帮助将不胜感激。谢谢。

[
{
"id": 1,
"start_time": "10:00",
"end_time": "11:00"
},
{
"id": 2,
"start_time": "11:00",
"end_time": "12:00"
},
{
"id": 3,
"start_time": "13:00",
"end_time": "15:00"
},
{
"id": 4,
"start_time": "13:00",
"end_time": "14:00"
},
{
"id": 5,
"start_time": "13:00",
"end_time": "14:00"
},
{
"id": 6,
"start_time": "13:00",
"end_time": "14:00"
},
{
"id": 7,
"start_time": "14:00",
"end_time": "15:00"
},
{
"id": 8,
"start_time": "17:00",
"end_time": "18:00"
},
{
"id": 9,
"start_time": "17:00",
"end_time": "18:00"
},
{
"id": 10,
"start_time": "17:00",
"end_time": "18:00"
}
]

【问题讨论】:

  • 请说明您为实现目标所做的尝试。
  • 谢谢,我想通了。

标签: php loops


【解决方案1】:
public static function checkSlotLimit($orders, $startTime, $endTime)
        {
            $counter = 0;
            foreach($orders as $order)
            {
                if( ($order->start_time === $startTime) && ($order->end_time === $endTime) )
                {
                    $counter++;
                }
            }
            return $counter;
        }

Self::checkSlotLimit($orders, $slotFrom->format('H:i'), $slotTo->format('H:i')) < 3 ? true : false;

【讨论】:

  • 也可以只过滤和计数return count(array_filter($orders, fn($order) =&gt; $order-&gt;start_time === $startTime &amp;&amp; $order-&gt;end_time === $endTime));
猜你喜欢
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2018-06-15
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 2012-11-16
相关资源
最近更新 更多