¿Cómo obtener todos los caracteres alfabéticos en una matriz en PHP?

176

¿Hay alguna manera de obtener todos los caracteres alfabéticos (AZ) en una matriz en PHP para que pueda recorrerlos y mostrarlos?

Haga clic en Upvote
fuente

Respuestas:

484
$alphas = range('A', 'Z');
PEZ
fuente
21
Me encanta esta respuesta ¡Gracias por presentarme la range()función!
Theodore R. Smith
Esto no parece funcionar con caracteres Unicode. Pero es bueno lo contrario. No sé si uno podría convertir caracteres en enteros y luego lo contrario para evitar este problema ...
NoOne
3
Ese es un problema diferente al que le preguntó el OP. Vale la pena su propia pregunta, OMI.
PEZ
62

Para obtener mayúsculas y minúsculas, combine los dos rangos:

$alphas = array_merge(range('A', 'Z'), range('a', 'z'));
PEZ
fuente
2
También array_combine(range('A', 'Z'), range('a', 'z'))funciona
hakiko
34
$alphabet = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
Nathan
fuente
20
divertido pero utilizable
Haga clic en Votación a favor el
Bueno cuando crees que el rango () es lento.
Minimihi
13

De otra manera:

$c = 'A';
$chars = array($c);
while ($c < 'Z') $chars[] = ++$c;
Gumbo
fuente
9

PHP ya ha proporcionado una función para tales aplicaciones.
chr(x)devuelve el carácter ascii con un índice entero de x.
En algunos casos, este enfoque debería resultar más intuitivo.
Consulte http://www.asciitable.com/

$UPPERCASE_LETTERS = range(chr(65),chr(90));
$LOWERCASE_LETTERS = range(chr(97),chr(122));
$NUMBERS_ZERO_THROUGH_NINE = range(chr(48),chr(57));

$ALPHA_NUMERIC_CHARS = array_merge($UPPERCASE_LETTERS, $LOWERCASE_LETTERS, $NUMBERS_ZERO_THROUGH_NINE); 
Kyle Michael Becker
fuente
4
<?php 

$array = Array();
for( $i = 65; $i < 91; $i++){
        $array[] = chr($i);
}

foreach( $array as $k => $v){
        echo "$k $v \n";
}

?>

$ php loop.php 
0 A 
1 B 
2 C 
3 D 
4 E 
5 F 
6 G 
7 H
...
Aaron Maenpaa
fuente
Simplemente puede hacer $ array [] = chr ($ i) para agregar un elemento
Tom Haigh
Eso es esencialmente lo que rangehace, pero esta es una forma más amplia de hacerlo.
Ross
Es posible que haya estado usando JavaScript por un tiempo porque Array () realmente debería ser array (). O, en JS, [] :)
alex
4

rango para AZ, pero si desea ir, por ejemplo, de A a DU, entonces:

 function generateAlphabet($na) {
        $sa = "";
        while ($na >= 0) {
            $sa = chr($na % 26 + 65) . $sa;
            $na = floor($na / 26) - 1;
        }
        return $sa;
    }

    $alphabet = Array();
    for ($na = 0; $na < 125; $na++) {
        $alphabet[]=generateAlphabet($na);
    }

    print_r($alphabet);

su respuesta se verá así:

Array ( [0] => A [1] => B [2] => C [3] => D [4] => E [5] => F [6] => G [7] => H [8] => I [9] => J [10] => K [11] => L [12] => M [13] => N [14] => O [15] => P [16] => Q [17] => R [18] => S [19] => T [20] => U [21] => V [22] => W [23] => X [24] => Y [25] => Z [26] => AA [27] => AB [28] => AC [29] => AD [30] => AE [31] => AF [32] => AG [33] => AH [34] => AI [35] => AJ [36] => AK [37] => AL [38] => AM [39] => AN [40] => AO [41] => AP [42] => AQ [43] => AR [44] => AS [45] => AT [46] => AU [47] => AV [48] => AW [49] => AX [50] => AY [51] => AZ [52] => BA [53] => BB [54] => BC [55] => BD [56] => BE [57] => BF [58] => BG [59] => BH [60] => BI [61] => BJ [62] => BK [63] => BL [64] => BM [65] => BN [66] => BO [67] => BP [68] => BQ [69] => BR [70] => BS [71] => BT [72] => BU [73] => BV [74] => BW [75] => BX [76] => BY [77] => BZ [78] => CA [79] => CB [80] => CC [81] => CD [82] => CE [83] => CF [84] => CG [85] => CH [86] => CI [87] => CJ [88] => CK [89] => CL [90] => CM [91] => CN [92] => CO [93] => CP [94] => CQ [95] => CR [96] => CS [97] => CT [98] => CU [99] => CV [100] => CW [101] => CX [102] => CY [103] => CZ [104] => DA [105] => DB [106] => DC [107] => DD [108] => DE [109] => DF [110] => DG [111] => DH [112] => DI [113] => DJ [114] => DK [115] => DL [116] => DM [117] => DN [118] => DO [119] => DP [120] => DQ [121] => DR [122] => DS [123] => DT [124] => DU ) 
Bebe del infierno
fuente
3

Si necesita una matriz que tenga teclas alfabéticas y elementos (para una lista desplegable alfabética, por ejemplo), puede hacer esto:

$alphas = array_combine(range('A','Z'),range('A','Z'))

Rendimientos:

array (size=26)
  'A' => string 'A' (length=1)
  'B' => string 'B' (length=1)
  'C' => string 'C' (length=1)
  'D' => string 'D' (length=1)
  ...etc
pbarney
fuente
2
$array = range('a', 'z');
benlumley
fuente
1

Tal vez sea un poco tópico (la solución de inicio de tema solicitó solo para AZ), pero para la solución de caracteres cirílicos es:

// to place letters into the array
$alphas = array();
foreach (range(chr(0xC0), chr(0xDF)) as $b) {
    $alphas[] = iconv('CP1251', 'UTF-8', $b);
}    

// or conver array into comma-separated string
$alphas = array_reduce($alphas, function($p, $n) {
  return $p . '\'' . $n . '\',';
});
$alphas = rtrim($alphas, ',');

// echo string for testing
echo $alphas;
// or echo mb_strtolower($alphas); for lowercase letters
userlond
fuente
1

Todas buenas respuestas, en caso de que alguien esté buscando una serie de alfabetos en mayúsculas y minúsculas, aquí está:

$alpha = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
vikramaditya234
fuente
1
también puede serarray_merge(range('A', 'Z'), range('a', 'z'))
khandaniel
Me gusta esta respuesta, porque puedo agregar letras de nuestro alfabeto a esa matriz
kv1dr
0
$alphabets = range('A', 'Z');
    $doubleAlphabets = array();
    $count = 0;
    foreach($alphabets as $key => $alphabet)
    {
        $count++;
        $letter = $alphabet;
        while ($letter <= 'Z') 
        {
            $doubleAlphabets[] = $letter;

            ++$letter;
        }
    }

    return $doubleAlphabets;
Mohd Aidi
fuente
1
¿Puedes dar alguna explicación con tu respuesta?
Alex Wiese
Esto enumera las dos combinaciones de letras, ¿por qué?
Davorin
0

Prueba esto :

function missingCharacter($list) {

        // Create an array with a range from array minimum to maximu
        $newArray = range(min($list), max($list));

        // Find those elements that are present in the $newArray but not in given $list
        return array_diff($newArray, $list);
    }
print_r(missCharacter(array('a','b','d','g')));
Jagadeesha N
fuente
-1

Letras minusculas

for ($x = 97; $x < 122; $x++) {
    $y = chr($x);
    echo $y;
    echo "<br>";
}

Letras mayúsculas

for ($x = 65; $x < 90; $x++) {
    $y = chr($x);
    echo $y;
    echo "<br>";
}
Raja vikrant Sharma
fuente