public function getByYearDayAsText($byYearDay) { if (empty($byYearDay)) { return ''; } // sort negative indices in reverse order so we get e.g. 1st, 2nd, 4th, 3rd last, last day usort($byYearDay, function ($a, $b) { if ($a < 0 && $b < 0 || $a >= 0 && $b >= 0) { return $a - $b; } return $b - $a; }); $byYearDay = array_map(array($this, 'getOrdinalNumber'), $byYearDay, array_fill(0, count($byYearDay), end($byYearDay) < 0)); return $this->getListStringFromArray($byYearDay); }