Як отримати всі символи алфавіту в масиві в PHP?


176

Чи є спосіб отримати всі алфавітні символи (AZ) в масиві PHP, щоб я міг переглядати їх і відображати їх?

Відповіді:


484
$alphas = range('A', 'Z');

21
Я люблю цю відповідь. Дякую за те, що ви познайомили мене з функціоналом range()!
Теодор Р. Сміт

Схоже, це не працює з символами Unicode. Але добре інакше. Я не знаю, чи можна було перетворити символи на цілі числа, а потім навпаки, щоб обійти цю проблему ...
NoOne

3
Це інша проблема, ніж про яку ставила ОП. Варто власного питання, ІМО.
ПЕЗ

62

Для отримання верхнього та нижнього регістру об'єднайте два діапазони:

$alphas = array_merge(range('A', 'Z'), range('a', 'z'));

2
Також array_combine(range('A', 'Z'), range('a', 'z'))працює
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');

20
смішно, але
зручно

Добре, коли ти думаєш, що діапазон () - повільний.
Мініміхі


9

PHP вже надав функцію для таких програм.
chr(x)повертає символ ascii з цілим індексом x.
У деяких випадках такий підхід повинен виявитись найбільш інтуїтивно зрозумілим.
Посилайтесь на 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); 

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
...

Ви можете просто зробити $ array [] = chr ($ i), щоб додати елемент
Том Хей

Це по суті те, що rangeробить, але це більш широкий спосіб зробити це.
Росс

Можливо, ви деякий час використовували JavaScript, оскільки Array () дійсно повинен бути масивом (). Або в JS, [] :)
alex

4

діапазон для AZ, але якщо ви хочете, наприклад, від A до DU:

 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);

ваша відповідь буде виглядати так:

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 ) 

3

Якщо вам потрібен масив, який містить алфавітні ключі, а також елементи (наприклад, за алфавітним списком), ви можете зробити це:

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

Врожайність:

array (size=26)
  'A' => string 'A' (length=1)
  'B' => string 'B' (length=1)
  'C' => string 'C' (length=1)
  'D' => string 'D' (length=1)
  ...etc


1

Можливо, це трохи офтопік (тематичний стартер попросив рішення лише для AZ), але для вирішення символів кирилічного характеру це:

// 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

1

Усі добрі відповіді, якщо хтось шукає масив малих і малих букв, ось це:

$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');

1
це може бути такожarray_merge(range('A', 'Z'), range('a', 'z'))
khandaniel

Мені подобається ця відповідь, тому що я можу додати букви нашого алфавіту до цього масиву
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;

1
Чи можете ви дати пояснення зі своєю відповіддю?
Алекс Візе

Тут перераховані всі дві комбінації літер, чому?
Даворін

0

Спробуйте це :

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')));

-1

Букви нижнього регістру

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

Великі літери

for ($x = 65; $x < 90; $x++) {
    $y = chr($x);
    echo $y;
    echo "<br>";
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.