【问题标题】:How to get the array difference of multidimensional array in php?如何在php中获取多维数组的数组差异?
【发布时间】:2020-10-08 17:34:52
【问题描述】:

我有 2 个两个数组

$schedule = [
    "Monday" => [0 => "12:00", 1 => "01:20"],
    "Tuesday" => [0 => "04:20",1 => "12:00"],
];

$bookedSlots = [
    ["Monday" => "01:20"],
    ["Tuesday" => "04:20" ] 
];

现在我希望答案或结果返回一个剩余可用插槽的数组,在这些可用插槽中,预订的插槽应从计划中删除。就像下面给出的结果。

$availableSlots = $schedule - $bookedSlots; // [ "Monday" => [ 0 => "12:00"], "Tuesday" =>[ 0 => "12:00" ];

【问题讨论】:

  • 请分享一些您已经尝试过的代码。

标签: php arrays laravel multidimensional-array


【解决方案1】:

好的。所以在这里我写了一个辅助函数来概括解决方案。您可以使用下面提到的功能。

function find_diff($schedule, $booked_slots)
{
  $diff = [];
  foreach ($schedule as $day =>  $times) {
    $day_wise_slots = isset($booked_slots[$day]) ? $booked_slots[$day] : [];
    if (!is_array($day_wise_slots)) $day_wise_slots = [$day_wise_slots];
    $diff[$day] = array_diff($times, $day_wise_slots);

  }

  return $diff;
}

使用的函数:issetarray_diff

希望这会有所帮助!

【讨论】:

  • 我试过了,但是抛出了这个异常,ErrorException: Array to string conversion at $diff[$day] = array_diff($times, $day_wise_slots);
  • 你传递的参数是什么?
  • 我完全复制了您的解决方案。并通过了我的问题中提到的上述数组
  • 您在问题中传递的数组格式错误,即使通过也会引发错误,我已更正了问题。 $schedule = [ "星期一" => [0 => "12:00", 1 => "01:20"], "星期二" => [0 => "04:20",1 => "12: 00"], ]; $bookedSlots = [ ["Monday" => "01:20"], ["Tuesday" => "04:20" ] ];
  • 我 print_r 两个数组,在这里你可以看到1drv.ms/u/s!AqcCrPyKckd3tQwJF6uKUd3Ay-hI?e=sDd5gT
猜你喜欢
  • 2016-05-01
  • 2012-08-28
  • 2021-07-31
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多