determineVariance($time); } private function determineVariance(Time $t) { $var = [ 'time' => $t, 'entities' => iterator_to_array($t->getIterator()) ]; if (empty($this->data)) $this->data[] = $var; else { foreach (array_reverse($this->data) as $entry) { foreach ($entry['entities'] as $entity) { foreach ($var['entities'] as $key => $ventity) if ($ventity instanceof $entity && !$ventity->diff($entity)) unset($var['entities'][$key]); } } if (!empty($var['entities'])) $this->data[] = $var; } } /** * Returns the changes in the forecast * * @return array */ public function getData(callable $filterFn = null): array { return $this->data; } }