fork download
  1. <?php
  2.  
  3. function array_diff_gaps($array1, $array2)
  4. {
  5. $prevnext = function($a) {
  6. return array_map(function($j) {
  7. }, $a);
  8. };
  9.  
  10. $array2 = array_reduce($prevnext($array2), 'array_merge', []);
  11.  
  12. foreach($prevnext($array1) as $key => $value) {
  13. foreach ($array2 as $k => $v) {
  14. if (in_array($v, range($value[0], $value[1]))) unset($array1[$key]);
  15. }
  16. }
  17.  
  18. return $array1;
  19. }
  20.  
  21. $times = [
  22. [600 => 660], [660 => 720], [720 => 780], [780 => 840], [840 => 900], [900 => 960],
  23. [960 => 1020], [1020 => 1080], [1080 => 1140], [1140 => 1200], [1200 => 1260]
  24. ];
  25.  
  26. $zhurnal = [
  27. [660 => 720], [600 => 660]
  28. ];
  29.  
  30. print_r(array_diff_gaps($times, $zhurnal));
Success #stdin #stdout 0s 82560KB
stdin
Standard input is empty
stdout
Array
(
    [3] => Array
        (
            [780] => 840
        )

    [4] => Array
        (
            [840] => 900
        )

    [5] => Array
        (
            [900] => 960
        )

    [6] => Array
        (
            [960] => 1020
        )

    [7] => Array
        (
            [1020] => 1080
        )

    [8] => Array
        (
            [1080] => 1140
        )

    [9] => Array
        (
            [1140] => 1200
        )

    [10] => Array
        (
            [1200] => 1260
        )

)