Hey, vielen Dank für die Hilfe!
Ich hab allerdings Probleme mit der Umsetzung
Ich hab hier mal meine Funktion:

Code:
function getNumberOfMaxOverlaps(DateTime $date,array $tasks){
	$tasksOfThisDay = array();
	foreach($tasks as $task)
	{
		if($task->start->format('Y-m-d') == $date->format('Y-m-d'))
		{
			$tasksOfThisDay[] = $task;
		}
	}
	$overlap = array();
	foreach ($tasksOfThisDay as $task1) 
	{
		foreach ($tasksOfThisDay as $task2) 
		{


			if (strtotime($task1->start->format("Y-m-d HH:ii:ss")) <  strtotime($task2->end->format("Y-m-d HH:ii:ss")) &&
				strtotime($task1->start->format("Y-m-d HH:ii:ss")) >= strtotime($task2->start))
			{
				$array = array($task1->id, $task2->id);
				sort($array);
				if (!in_array($array, $overlap)) $overlap[] = $array;
			}
		}
	}
}
$overlap zeigt am Ende allerdings immer 0 an. Gearbeitet habe ich mit folgenden Daten

Code:
$rows               = array();$class              = new stdClass();
$class->id          = 1;
$class->name        = 'Test';
$class->description = 'Test Description';
$class->start       = '2014-06-17 06:05:00';
$class->end         = '2014-06-17 07:00:00';
$rows[]             = $class;
$class              = new stdClass();
$class->id          = 2;
$class->name        = 'Test 2';
$class->description = 'Test Description 2';
$class->start       = '2014-06-17 07:00:00';
$class->end         = '2014-06-17 07:40:00';
$rows[]             = $class;
$class              = new stdClass();
$class->id          = 3;
$class->name        = 'Test 2';
$class->description = 'Test Description 2';
$class->start       = '2014-06-17 09:00:00';
$class->end         = '2014-06-17 09:40:00';
$rows[]             = $class;
$class              = new stdClass();
$class->id          = 4;
$class->name        = 'Test 2';
$class->description = 'Test Description 2';
$class->start       = '2014-06-17 10:00:00';
$class->end         = '2014-06-17 11:40:00';
$rows[]             = $class;