-1

请看下面的数组,我想在数组while循环中隐藏6和7,因为它们在第一个数组中,基本上是它的时间。第一个数组包含约会,第二个数组包含时间。如果用户当时已经固定在某个地方,我想省略计时(第二个数组)。所以基本上时间比较与 strtotime 整数..需要你的帮助....

Array
(
    [3] => Array
        (
            [id] => 100
            [start] => 1364558400
            [end] => 1364565600
            [starttime] => 2013-03-29 17:30:00
            [endtime] => 2013-03-29 19:30:00
        )

    [4] => Array
        (
            [id] => 100
            [start] => 1364542200
            [end] => 1364549400
            [starttime] => 2013-03-29 13:00:00
            [endtime] => 2013-03-29 15:00:00
        )

)
Array
(
    [6] => Array
        (
            [id] => 37
            [start] => 1364542200
            [end] => 1364549400
            [starttime] => 2013-03-29 13:00:00
            [endtime] => 2013-03-29 15:00:00
        )

    [7] => Array
        (
            [id] => 38
            [start] => 1364549400
            [end] => 1364556600
            [starttime] => 2013-03-29 15:00:00
            [endtime] => 2013-03-29 17:00:00
        )

    [8] => Array
        (
            [id] => 39
            [start] => 1364558400
            [end] => 1364565600
            [starttime] => 2013-03-29 17:30:00
            [endtime] => 2013-03-29 19:30:00
        )

    [9] => Array
        (
            [id] => 40
            [start] => 1364565600
            [end] => 1364571000
            [starttime] => 2013-03-29 19:30:00
            [endtime] => 2013-03-29 21:00:00
        )

)
4

2 回答 2

1

据我了解您的问题,您应该取消设置第二个数组的元素。假设您的数组是:

$appointments = array(...);
$timings = array(...);

你应该做

if (condition_is_met($appointments)) {
    unset($timings[$id]);
}

那是你需要的吗?

编辑:我猜你正在寻找这样的东西:

foreach($timings as $timing) { // check if this timing is already busy
  $id = null;
  foreach ($appointments as $id => $appointment) {
    if ($appointment['start'] == $timing['start'] &&
      $appointment['end'] == $timing['end'] ) {
      $found = $id;
      break;
    }
  }
  if ($id) unset($appointments[$id]);
}

这取决于处理时间的条件是什么 - 两个元素的开始和结束应该相同,或者从同一时期起至少有一秒钟。您可以更改 if 语句并将任何您想要的内容放在那里。

于 2013-02-22T19:39:45.127 回答
0

据我了解,如果它们出现在第一个数组中,您正在尝试删除第二个数组中的元素。请参见:

foreach($array2 as $i)
{
  if (in_array($i, $array1))
  {
    unset($i);
  }
}

参考。 http://php.net/manual/en/function.in-array.php

或者,您可以创建如下函数:

function checkItemExists($arr1, $arr2)
{
  $index1 = 0;
  $index2 = 0;
  foreach ($arr1 as $i)
  {
    foreach ($i as $j)
    {
      if ($j == $arr2[$index1][$index2])
      {
        unset($arr2[$index1][$index2]);
      }
     index2++;
    }
   $index1++;
   $index2 = 0;
  }
}
于 2013-02-22T19:41:41.710 回答