RSS

  • YouTube
  • LinkedIn
  • Google

Benennen von Dateien mithilfe der Liste aus 0 bis Z

Heute ich war einige Skripte programmieren und habe ein wenig Mühe zu ein definiertes Muster verwenden.

Das Muster ist, Dateien zu erstellen, wo die Reihenfolge in beginnt 0 (0 (null)) und kann nicht wiederholt werden, bis Z.

Beispiel:

myfile0.ext, myfile1.ext, myfile2.ext, (...), myfile9.ext, myfileA.ext, myfileB.txt, (...), myfileZ.txt

Gut, Dies ist kein großes Problem, so dass ich diesen Code verwenden.

// Filename
$seq = $last_used_seq = '';
$seqs = array_merge(range('0','9'), range('A', 'Z'));]
$l = 1;
while (!in_array($seq, $seqs)) {
    $seq = chr(ord($last_used_seq) + $l++);
}

Aber

$Seq

nicht gab der erwartete Wert des nicht 0 (0 (null)) bei der ersten Ausführung. Stattdessen, Es war leer.

Debuggen die Variablen, Ich sah, dass die while nie ergibt true. Auf der Kommandozeile zu reproduzieren versucht sah ich, dass

in_array($Seq, $seqs);

immer zurück true. Ich versuchte, verwenden “”, “R” und egal, welchen Wert ich habe, noch zurückgeben true.

So ändern ich, um zu verwenden STRICT Argument für in_array to true and works for ‘;A’; through ‘;Z’;, but not for ‘;0; through ‘;9;.

while (!in_array($seq, $seqs, true)) {
    $seq = chr(ord($last_used_seq) + $l++);
}

Damn…; PHP ist richtig, ;0; ist nicht unbedingt gleich 0. Die Chr Funktionsrückgabe string und

Bereich('0', '9')

erstellt ein array mit integer Werte.

Also, Ich änderte den Ansatz auf alle Werte mit auswerten STRICT, Da ich einen schönen und sauberen Code ohne keine anderen Funktionen möchte verwendet werden zu erstellen.

This is the final code that I’;m mit:

// Anfangswerte $seq = '';
$Seqs = Array_merge(Bereich(Ord('0'),Ord('9')), Bereich(Ord('A'), Ord('Z')));
$Seqs = Array_map("chr", $seqs);
$l = 1;
während (!in_array($Seq, $seqs, wahr)) {
    $Seq = chr(Ord($Infos['Last_seq']) + $l ++);
}

// Dateinamen foreach ($itens_for_files as $key =>; $itens) {
    // ... Eine andere Codes, die Datei $seq füllen = chr(Ord($Seq) + 1);
    während (!in_array($Seq, $seqs, wahr)) {
    $Seq = chr(Ord($Seq) + 1);
    $Filename = 'Myfile' . $Seq . . 'ext';
    // ...
}

Wie Sie sehen können, Ich änderte die $seqs initial values from ‘;0; zu Ihrem ASCII Code und auf Ihren Wert, der gab mir wieder ein array mit allen Werten im string Typ.

Bis bald!

Hinterlasse eine Antwort

Ihre e-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind markiert *

Diese Seite benutzt Akismet, Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet wird.