Nombres de archivos con lista de 0 a la Z

O ando aprendendo nesta caminhada sobre una Terra

Nombres de archivos con lista de 0 a la Z

Hoy fue la codificación algunos scripts y encontró un pequeño problema con un patrón definido.

El patrón es crear archivos donde la secuencia se inicia en 0 (cero) y no puede repetirse hasta Z.

Ejemplo:

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

Bien, Esto no es un gran problema por lo utilizar este código.

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

Pero

$Seq

no dio el valor esperado de 0 (cero) en la primera carrera. En su lugar, fue en blanco.

Depuración de las variables, He visto que la while nunca se evalúa a true. Intentar reproducir en la línea de comandos vi

in_array($Seq, $seqs);

siempre volver true. Intenté utilizar “”, “R” y no importa qué valor, volviendo todavía true.

Por lo tanto cambiar para utilizar STRICT argumento para 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 es correcto, ;0; no es estrictamente igual a 0. El Chr función de retorno string y

rango('0', '9')

crea un array con integer valores.

Por lo tanto, Cambié el enfoque para evaluar todos los valores con STRICT, porque me gustaría crear un código limpio y sin ninguna otras funciones para utilizar.

This is the final code that I’;uso de m:

// Initial values 
$seq = '';
$seqs = array_merge(rango(Ord('0'),Ord('9')), rango(Ord('A'), Ord('Z')));
$seqs = array_map('chr', $seqs);
$l = 1;
al mismo tiempo (!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);
    al mismo tiempo (!in_array($Seq, $seqs, true)) {
    $SEQ = chr(Ord($Seq) + 1);
    $FILENAME = 'miarchivo' . $Seq . ".ext";
    // ...
}

Cómo se puede ver, He cambiado el $seqs initial values from ‘;0; a su ASCII el código y volver a su valor que me dio un array con todos los valores de string tipo.

Nos vemos!

 ;

Contesta

Su dirección de correo electrónico no se publicará. Los campos obligatorios están marcados *

Este sitio utiliza Akismet para reducir el spam. Aprender cómo se procesaron los datos de comentario.