data = \array_values($uid ? \array_filter(\array_map(function($id){ return \preg_match('/^([0-9]+|\\*):([0-9]+|\\*)/', $id, $dummy) ? $id : \intval($id); }, $mItems)) : $mItems); } else if (\is_scalar($mItems)) { $this->data[] = $mItems; } $this->UID = $uid; } public function count(): int { return \count($this->data); } public function contains($value): bool { return \in_array($value, $this->data); } public function indexOf($value)/*: int|false*/ { return \array_search($value, $this->data); } public function getArrayCopy(): array { return $this->data; } public function __toString(): string { $aResult = array(); $iStart = null; $iPrev = null; foreach ($this->data as $mItem) { if (false !== \strpos($mItem, ':')) { $aResult[] = $mItem; continue; } if (null === $iStart || null === $iPrev) { $iStart = $mItem; $iPrev = $mItem; continue; } if ($iPrev === $mItem - 1) { $iPrev = $mItem; } else { $aResult[] = $iStart === $iPrev ? $iStart : $iStart.':'.$iPrev; $iStart = $mItem; $iPrev = $mItem; } } if (null !== $iStart && null !== $iPrev) { $aResult[] = $iStart === $iPrev ? $iStart : $iStart.':'.$iPrev; } return \implode(',', $aResult); } }