PHP从一个数组中创建预订信息,每个日期具有不同的优先级和时间范围,这是';不允许重叠
我有以下PHP数组:PHP从一个数组中创建预订信息,每个日期具有不同的优先级和时间范围,这是';不允许重叠,php,arrays,sorting,overlap,Php,Arrays,Sorting,Overlap,我有以下PHP数组: Array ( [20170118] => Array ( [1420] => Array ( [ENDDATE] => 2017-01-18 [STARTTIME] => 1420 [ENDTIME] => 1530 [PRIORITY] => superadmi
Array
(
[20170118] => Array
(
[1420] => Array
(
[ENDDATE] => 2017-01-18
[STARTTIME] => 1420
[ENDTIME] => 1530
[PRIORITY] => superadmin
[PRESENTATION] => 46203
[TITLE] => Ny+video+test
)
[0800] => Array
(
[ENDDATE] => 2017-01-18
[STARTTIME] => 0800
[ENDTIME] => 1000
[PRIORITY] => superadmin
[PRESENTATION] => 09341
[TITLE] => Linket+pr%C3%A6sentationer+2
)
[1200] => Array
(
[ENDDATE] => 2017-01-18
[STARTTIME] => 1200
[ENDTIME] => 1500
[PRIORITY] => high
[PRESENTATION] => 28160
[TITLE] => Linket+pr%C3%A6sentationer
)
[1600] => Array
(
[ENDDATE] => 2017-01-18
[STARTTIME] => 1600
[ENDTIME] => 1800
[PRIORITY] => high
[PRESENTATION] => 95042
[TITLE] => Pausesk%C3%A6rm
)
[0700] => Array
(
[ENDDATE] => 2017-01-18
[STARTTIME] => 0700
[ENDTIME] => 1130
[PRIORITY] => high
[PRESENTATION] => 65921
[TITLE] => Linket+Linket+pr%C3%A6sentationer+1
)
[1100] => Array
(
[ENDDATE] => 2017-01-18
[STARTTIME] => 1100
[ENDTIME] => 2100
[PRIORITY] => normal
[PRESENTATION] => 85643
[TITLE] => Kalender
)
)
)
我需要对这个数组做的是,它应该创建一个包含这些元素的新数组,但这样开始时间和结束时间就不会相互重叠
(超级管理员的优先级最高,普通管理员的优先级最低)
- 超级管理员应该一直在那里
- 高应该在那里的全长,如果它不重叠超级管理员。 只有在不与其他优先事项重叠的情况下,正常情况才应该存在
Array
(
[20170118] => Array
(
[0700] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 0700
[ENDTIME] => 0800
[PRIORITY] => high
[PRESENTATION] => 65921
[TITLE] => Linket+Linket+pr%C3%A6sentationer+1
)
[0800] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 0800
[ENDTIME] => 1000
[PRIORITY] => superadmin
[PRESENTATION] => 09341
[TITLE] => Linket+pr%C3%A6sentationer+2
)
[1000] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 1000
[ENDTIME] => 1130
[PRIORITY] => high
[PRESENTATION] => 65921
[TITLE] => Linket+Linket+pr%C3%A6sentationer+1
)
[1130] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 1130
[ENDTIME] => 1200
[PRIORITY] => normal
[PRESENTATION] => 85643
[TITLE] => Kalender
)
[1200] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 1200
[ENDTIME] => 1420
[PRIORITY] => high
[PRESENTATION] => 28160
[TITLE] => Linket+pr%C3%A6sentationer
)
[1420] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 1420
[ENDTIME] => 1530
[PRIORITY] => superadmin
[PRESENTATION] => 46203
[TITLE] => Ny+video+test
)
[1530] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 1530
[ENDTIME] => 1600
[PRIORITY] => normal
[PRESENTATION] => 85643
[TITLE] => Kalender
)
[1600] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 1600
[ENDTIME] => 1800
[PRIORITY] => high
[PRESENTATION] => 95042
[TITLE] => Pausesk%C3%A6rm
)
[1800] => Array
(
[ENDDATE] => 2017-01-18
[STARTIME] => 1800
[ENDTIME] => 2100
[PRIORITY] => normal
[PRESENTATION] => 85643
[TITLE] => Kalender
)
)
)
我用php中的类解决了这一部分,我可能不是正确的方法。但至少它输出了我想要的,这就是我所做的:
<?php
/*
This JSON encoded away contains the elements wich have been booked for each day, wich start and end time of the day
priority order is:
Normal: is the lowest priority
High: is always more important than normal
Superadmin: Is the highest priority and should always be shown over the other priorities
*/
$array = '{"20170118":{"superadmin":[{"ENDDATE":"2017-01-18","STARTTIME":"1420","ENDTIME":"1530","PRIORITY":"superadmin","PRESENTATION":"46203","TITLE":"Ny+video+test"},{"ENDDATE":"2017-01-18","STARTTIME":"0800","ENDTIME":"1000","PRIORITY":"superadmin","PRESENTATION":"09341","TITLE":"Linket+pr%C3%A6sentationer+2"}],"high":[{"ENDDATE":"2017-01-18","STARTTIME":"1200","ENDTIME":"1500","PRIORITY":"high","PRESENTATION":"28160","TITLE":"Linket+pr%C3%A6sentationer"},{"ENDDATE":"2017-01-18","STARTTIME":"1600","ENDTIME":"1800","PRIORITY":"high","PRESENTATION":"95042","TITLE":"Pausesk%C3%A6rm"},{"ENDDATE":"2017-01-18","STARTTIME":"0700","ENDTIME":"1130","PRIORITY":"high","PRESENTATION":"65921","TITLE":"Linket+Linket+pr%C3%A6sentationer+1"}],"normal":[{"ENDDATE":"2017-01-18","STARTTIME":"1100","ENDTIME":"2100","PRIORITY":"normal","PRESENTATION":"85643","TITLE":"Kalender"}]},"20170119":{"superadmin":[{"ENDDATE":"2017-01-19","STARTTIME":"0000","ENDTIME":"0629","PRIORITY":"superadmin","PRESENTATION":"46203","TITLE":"Ny+video+test"}],"high":[{"ENDDATE":"2017-01-19","STARTTIME":"0527","ENDTIME":"1427","PRIORITY":"high","PRESENTATION":"85643","TITLE":"Kalender"}],"normal":[{"ENDDATE":"2017-01-20","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170121":{"normal":[{"ENDDATE":"2017-01-22","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170123":{"normal":[{"ENDDATE":"2017-01-24","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170126":{"normal":[{"ENDDATE":"2017-01-27","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170128":{"normal":[{"ENDDATE":"2017-01-29","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170130":{"normal":[{"ENDDATE":"2017-01-31","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170202":{"normal":[{"ENDDATE":"2017-02-03","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170204":{"normal":[{"ENDDATE":"2017-02-05","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170206":{"normal":[{"ENDDATE":"2017-02-07","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170209":{"normal":[{"ENDDATE":"2017-02-10","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170211":{"normal":[{"ENDDATE":"2017-02-12","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170213":{"normal":[{"ENDDATE":"2017-02-14","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170216":{"normal":[{"ENDDATE":"2017-02-17","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170218":{"normal":[{"ENDDATE":"2017-02-19","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170220":{"normal":[{"ENDDATE":"2017-02-21","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170223":{"normal":[{"ENDDATE":"2017-02-24","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170225":{"normal":[{"ENDDATE":"2017-02-26","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170227":{"normal":[{"ENDDATE":"2017-02-28","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170302":{"normal":[{"ENDDATE":"2017-03-03","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170304":{"normal":[{"ENDDATE":"2017-03-05","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170306":{"normal":[{"ENDDATE":"2017-03-07","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170309":{"normal":[{"ENDDATE":"2017-03-10","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170311":{"normal":[{"ENDDATE":"2017-03-12","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170313":{"normal":[{"ENDDATE":"2017-03-14","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170316":{"normal":[{"ENDDATE":"2017-03-17","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170318":{"normal":[{"ENDDATE":"2017-03-19","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170320":{"normal":[{"ENDDATE":"2017-03-21","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170323":{"normal":[{"ENDDATE":"2017-03-24","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170325":{"normal":[{"ENDDATE":"2017-03-26","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170327":{"normal":[{"ENDDATE":"2017-03-28","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170330":{"normal":[{"ENDDATE":"2017-03-31","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170401":{"normal":[{"ENDDATE":"2017-04-02","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170403":{"normal":[{"ENDDATE":"2017-04-04","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170406":{"normal":[{"ENDDATE":"2017-04-07","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170408":{"normal":[{"ENDDATE":"2017-04-09","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170410":{"normal":[{"ENDDATE":"2017-04-11","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170413":{"normal":[{"ENDDATE":"2017-04-14","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170415":{"normal":[{"ENDDATE":"2017-04-16","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170417":{"normal":[{"ENDDATE":"2017-04-18","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170420":{"normal":[{"ENDDATE":"2017-04-21","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170422":{"normal":[{"ENDDATE":"2017-04-23","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170424":{"normal":[{"ENDDATE":"2017-04-25","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170427":{"normal":[{"ENDDATE":"2017-04-28","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170429":{"normal":[{"ENDDATE":"2017-04-30","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170501":{"normal":[{"ENDDATE":"2017-05-02","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170504":{"normal":[{"ENDDATE":"2017-05-05","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170506":{"normal":[{"ENDDATE":"2017-05-07","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170508":{"normal":[{"ENDDATE":"2017-05-09","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170511":{"normal":[{"ENDDATE":"2017-05-12","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170513":{"normal":[{"ENDDATE":"2017-05-14","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170515":{"normal":[{"ENDDATE":"2017-05-16","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170518":{"normal":[{"ENDDATE":"2017-05-19","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170520":{"normal":[{"ENDDATE":"2017-05-21","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170522":{"normal":[{"ENDDATE":"2017-05-23","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170525":{"normal":[{"ENDDATE":"2017-05-26","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170527":{"normal":[{"ENDDATE":"2017-05-28","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170529":{"normal":[{"ENDDATE":"2017-05-30","STARTTIME":"0000","ENDTIME":"0000","PRESENTATION":"95042","PRIORITY":"normal","TITLE":"Pausesk%C3%A6rm"}]},"20170116":{"normal":[{"ENDDATE":"2017-01-16","STARTTIME":"0000","ENDTIME":"0000","PRIORITY":"normal","PRESENTATION":"85643","TITLE":"Kalender"}]}}';
$json_decode = (array)json_decode($array, true);
class array_test_class{
private $_final_array = array();
private $_priorities = array("superadmin","high","normal");
private $_array = array();
function __construct($arr=array()){
$this->_array = $arr;
}
/**
* sortByOrder function.
* sorts the array by STARTTIME parameter, so the lowest one always will be shown first in the array
*
* @access public
* @static
* @param mixed $a
* @param mixed $b
* @return void
*/
public static function sortByOrder($a, $b) {
return $a['STARTTIME'] - $b['STARTTIME'];
}
final function priorities(){
return $this->_priorities;
}
/**
* array_sort_final function.
* This function sort the array by using sortByOrder function
*
* @access public
* @final
* @param int $index (default: 0)
* @return void
*/
final function array_sort_final($index=0){
$new_tmp = array();
foreach($this->_array as $key => $test){
$tmp = $test;
usort($tmp, array('array_test_class','sortByOrder'));
$new_tmp[$key] = $tmp;
}
$this->_array = $new_tmp;
}
final function array_return(){
asort($this->_final_array);
return $this->_final_array;
}
/**
* array_create_conflicts_bookings function.
* If theres a conflict between current priorities and higher level priorities this part will make sure the lower prioritie is only active
* when theres a gap between the higher ones.
* eg. If a high priorite event is running from 08.00 - 14.15 and theres a normal running from 07.30 - 21.00 it will split the normal event up into:
* 07.30 - 08.00 (normal)
* 08.00 - 14.15 (high)
* 14.15 - 21.00 (normal)
*
* @access private
* @final
* @param mixed $_final_arr
* @param mixed $_a
* @param mixed $priority
* @return void
*/
private final function array_create_conflicts_bookings($_final_arr, $_a, $priority){
usort($_final_arr, array('array_test_class','sortByOrder'));
$_a_start_time = $_a["STARTTIME"];
$_a_end_time = $_a["ENDTIME"];
$i = 0;
foreach($_final_arr as $_f_arr){
$_f_start_time = $_f_arr["STARTTIME"];
$_f_end_time = $_f_arr["ENDTIME"];
$continue = false;
if($_a_start_time == $_a_end_time){
$_a_end_time = "2400";
}
if($_a_start_time < $_f_start_time){
if(!isset($this->_final_array[$_a_start_time])){
$this->_final_array[$_a_start_time] = array(
"ENDDATE" => $_a["ENDDATE"],
"STARTTIME" => $_a_start_time,
"ENDTIME" => $_f_start_time,
"PRESENTATION" => $_a["PRESENTATION"],
"TITLE" => $_a["TITLE"],
"PRIORITY" => $_a["PRIORITY"],
);
}
$_a_start_time = $_f_end_time;
}
if($_a_end_time >= $_f_end_time){
$_a_start_time = $_f_end_time;
if(!isset($this->_final_array[$_f_end_time])){
$end = $_a_end_time;
if(isset($_final_arr[$i+1])){
$end = $_final_arr[$i+1]["STARTTIME"];
}
$this->_final_array[$_f_end_time] = array(
"ENDDATE" => $_a["ENDDATE"],
"STARTTIME" => $_f_end_time,
"ENDTIME" => ($end == "2400" ? "00000" : $end),
"PRESENTATION" => $_a["PRESENTATION"],
"TITLE" => $_a["TITLE"],
"PRIORITY" => $_a["PRIORITY"],
);
}
}
$i++;
}
}
/**
* array_create_bookings function.
* This section creates the final array output and checks for conflicts, if theres a conflict the function array_create_conflicts_bookings will be run
*
* @access public
* @final
* @param int $priority (default: 0)
* @param bool $check_for_matches (default: false)
* @return void
*/
final function array_create_bookings($priority=0, $check_for_matches=false){
if($priority<3){
if(!$check_for_matches){
/* If its the first time we run the function it will always try to create the highest priority and run again in a loop and create next next priority events */
if(isset($this->_array[$this->_priorities[$priority]])){
foreach($this->_array[$this->_priorities[$priority]] as $_a){
$this->_final_array[$_a["STARTTIME"]] = array(
"ENDDATE" => $_a["ENDDATE"],
"STARTTIME" => $_a["STARTTIME"],
"ENDTIME" => $_a["ENDTIME"],
"PRESENTATION" => $_a["PRESENTATION"],
"TITLE" => $_a["TITLE"],
"PRIORITY" => $_a["PRIORITY"],
);
}
}
$this->array_create_bookings(($priority+1), true);
}else{
/* If its not the first run it will go down here and check for conflicts, if there is no conflict it will create the event else it will go to function array_create_conflicts_bookings */
if(isset($this->_array[$this->_priorities[$priority]])){
foreach($this->_array[$this->_priorities[$priority]] as $_a){
$_conflict = false;
$_conflicting_array = array();
foreach($this->_final_array as $_final_key => $_final_arr){
$tmp_end = $_a['ENDTIME'];
if($_a['ENDTIME'] == "0000"){
$tmp_end = "2400";
}
if (($_final_arr['STARTTIME'] <= $tmp_end) && ($_final_arr['ENDTIME'] >= $_a['STARTTIME'])) {
$_conflicting_array[] = $_final_arr;
$_conflict = true;
}
}
if($_conflict){
$this->array_create_conflicts_bookings($_conflicting_array, $_a, $priority);
}
if(!$_conflict){
$this->_final_array[$_a["STARTTIME"]] = array(
"ENDDATE" => $_a["ENDDATE"],
"STARTTIME" => $_a["STARTTIME"],
"ENDTIME" => $_a["ENDTIME"],
"PRESENTATION" => $_a["PRESENTATION"],
"TITLE" => $_a["TITLE"],
"PRIORITY" => $_a["PRIORITY"],
);
}
}
}
$this->array_create_bookings(($priority+1), true);
}
}
}
final function array_to_parse($arr){
$this->_this_array = array();
foreach($arr as $key => $arrs){
$this->_final_array = array();
$this->_array = $arrs;
$this->array_sort_final();
$this->array_create_bookings();
asort($this->_final_array);
$this->_this_array[$key] = $this->_final_array;
}
/* The end result */
echo "<pre style='margin: 0; display: inline-block; width: 40%; background-color: #d1d2d4; vertical-align:top; padding: 10px 20px 20px 20px; box-sizing: border-box;'>";
echo "<h2>Test</h2>";
print_r($this->_this_array);
echo "</pre>";
}
}
$array_test_class = new array_test_class();
$array_test_class->array_to_parse($json_decode); /* $json_decode contains the booked elements i need to sort each day */