Nommage des fichiers à l'aide de la liste de 0 à Z

O que ando ainda nesta caminhada sobre un Terra

Nommage des fichiers à l'aide de la liste de 0 à Z

Aujourd'hui j'ai était codage certains scripts et trouvé un peu de mal à utiliser un modèle défini.

Le modèle consiste à créer des fichiers où la séquence commence dans 0 (zéro) et ne peut être répété jusqu'à Z.

Exemple de:

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

Eh bien, ce n'est pas un gros problème, alors j'ai utilisé ce code.

// 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++);
}

Mais

$Seq

donné pas la valeur attendue de 0 (zéro) sur la première manche. Au lieu de cela, il était vide.

Les variables de débogage, J'ai vu que le while jamais la valeur true. Tenter de reproduire sur la ligne de commande, j’ai vu que

in_array($Seq, $seqs);

retourne toujours true. J'ai essayé d'utiliser “”, “R” et peu importe de quelle valeur, j'ai utilisé, encore de retour true.

Donc j’ai changer pour utiliser STRICT argument en faveur de 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 est juste, ;0; n'est pas strictement égal à 0. Le Chr retour de fonction string et

gamme(« 0 », « 9 »)

crée un array avec integer valeurs.

Alors, J'ai changé l'approche pour évaluer toutes les valeurs par STRICT, parce que je voudrais créer un code sympa et propre, sans aucune autre fonction à utiliser.

This is the final code that I’;à l’aide de m:

// Initial values 
$seq = '';
$seqs = array_merge(gamme(ORD(« 0 »),ORD(« 9 »)), gamme(ORD(« A »), ORD(« Z »)));
$seqs = array_map(« chr », $seqs);
$l = 1;
tout en (!in_array($Seq, $seqs, true)) {
    $Seq = chr(ORD($infos[« last_seq »]) + $l ++);
}

// Filenames
foreach ($itens_for_files as $key =>; $itens) {
    // ... Another codes to fill file    
    $seq = chr(ORD($Seq) + 1);
    tout en (!in_array($Seq, $seqs, true)) {
    $Seq = chr(ORD($Seq) + 1);
    $filename = « myfile » . $Seq . « .ext »;
    // ...
}

Comment vous pouvez voir, J'ai changé le $seqs initial values from ‘;0; à votre ASCII code et revenir à votre valeur qui m'a donné un array avec toutes les valeurs de string type de.

A la prochaine!

 ;

Laisser une réponse

Votre adresse email ne sera pas publié. Les champs obligatoires sont marqués *

Ce site utilise Akismet pour réduire le spam. Apprenez comment vos données de commentaire sont transformées.