Способ получить все буквенные символы в массиве в PHP?


177

Есть ли способ получить все буквенные символы (AZ) в массиве в PHP, чтобы я мог просмотреть их и просмотреть их?

Ответы:


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

21
Мне нравится этот ответ. Спасибо, что познакомили меня с этой range()функцией!
Теодор Р. Смит

Это не похоже на работу с символами Юникода. Но это хорошо в противном случае. Я не знаю, можно ли преобразовать символы в целые числа, а затем наоборот, чтобы обойти эту проблему ...
NoOne

3
Это другая проблема, о которой спрашивал ОП. Это стоит своего вопроса, ИМО.
PEZ

62

Чтобы получить как верхний, так и нижний регистр, объедините два диапазона:

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

2
Также array_combine(range('A', 'Z'), range('a', 'z'))работает
Hakiko



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 () действительно должен быть array (). Или, в JS, [] :)
Алекс

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.