Fehlende Nummern Liste suchen

Fragenfrager

Erfahrenes Mitglied
Hallo liebes Forum,

nach drei verworfenen Ansätzen benötige ich eure Hilfe, da mit der Kopf schwirrt.
Gegeben ist eine csv-Datei, in der Rechnungsnummern untereinander stehen. Diese sind alphanumerisch:
GGR150001
GGR150002
...
Ich möchte nun ermitteln, ob diese Nummern fortlaufend sind. Wenn eine Nummer fehlt, soll diese ausgegeben werden. Zusätzliches Problem, die Nummern können doppelt vorkommen:
GGR150001
GGR150001
GGR150002
GGR150004

Der ideale Output wäre: "Es fehlt GGR15003, GGR15001 kommt 2 mal vor".
 
Nur mit PHP
PHP:
$ids = array('GGR150001', 'GGR150002', 'GGR150004', 'GGR150001');
//Doppelte erkennen
$doppelt = array_filter(array_count_values($ids), create_function('$var', 'return $var > 1;'));

//doppelte aus der Liste entfernen
$uids = array_unique($ids);

//Sortieren
asort($uids);

//Die Zahlen extrahieren
foreach($uids as $id){
    preg_match('/\d+$/', $id, $matches);
    $numbers[] = $matches[0];
}

$missing = array();
//Die Zahlen hochzählen und überprüfen
for($i = $numbers[0]; $i <= $numbers[count($numbers)-1]; $i++){
    if(!in_array($i, $numbers)) $missing[] = $i; 
}

print_r($doppelt);
print_r($missing);

Code:
Array
(
    [GGR150001] => 2
)
Array
(
    [0] => 150003
)
 
Zurück