Увеличить буквы в PHP?


Недавно мне пришлось увеличить буквы в PHP в цикл повторить.

На каждой итерации, а не числовые индексы, нужно буквы алфавита.

Следовательно, как уже знаю, что PHP делает приращением букв (и достаточно просто), я сделал что-то вроде этого.

for($letra = 'a'; $letra != 'aa'; $letra++) {

    echo $letra;
}

// abcdefghijklmnopqrstuvwxyz

Однако, поскольку вы никогда не видели это документально, ни в никакой другой язык, который я знаю средство, как эту, я в сомнений, если должен использовать или нет.

учетной записи, кодирования (и другие), это безопасно использовать этот ресурс, или лучше обратиться для друзей chr и range('a', 'z'), как показано в примере ниже?

for($letra = 97; $letra <= 122; $letra++) {

    echo chr($letra);
}

//abcdefghijklmnopqrstuvwxyz


echo implode('', range('a', 'z')); //abcdefghijklmnopqrstuvwxyz

//abcdefghijklmnopqrstuvwxyz
Author: Maniero, 2015-02-04

3 answers

Это типичный язык слабо строго, как C например. Тип может использоваться, как если бы он был другой. Обратите внимание, что это отличается от динамически типизированным, так что C является статически типизированным языком (и ведет себя немного иначе).

В принципе нет проблем. Не вызывает ошибки любого рода. Только рекомендуется избегать эту особенность, когда это возможно, потому что это легко, использовать, неправильно. Ясно, что в простых ситуациях, как это трудно не заметить.

, Если это можно явно сказать, что такое намерение (работа с символами), это немного лучше с точки зрения удобочитаемости. Кто не знает, эта функция может выйти из-под контроля в первом примере кода вопроса. Но сказать, что неправильно это, драгоценности.

Я знаю, что это только пример, но в этом случае я бы использовал же string литерал :)

 8
Author: Maniero, 2020-09-18 14:20:05

Как уже было сказано, это особенность языков слабо строго. это работает, потому что прирост будет сделано в коде ASCII(A-Z 65-90, a-z 97-122) и точно не на буквы, которые вы видите. Это работает только с оператором инкремента(++). Уже с декремента не удается, то есть, не дает для создания строки z-Z-A.

Ручного говорит такого поведения, что он следует convesão Perl, который говорит, что набор действительны для приращения (a-z, a-Z и 0-9), поэтому z поворачивает aa в C он будет рядом ASCII-код.

Эта функция будет полезна при сборке в заголовке таблицы, где координаты ex: A1, B1 ...

Примеры на Perl

$char = 'z';
print ++$char; //saída: aa

Примере эквивалент range()

@alfabeto = ('a'..'z');

foreach(@alfabeto){
    print $_
}
 4
Author: rray, 2020-03-13 19:54:53

- Это нормально сделать таким образом, если бы я вам требуется решение, поэтому я хотел бы сделать таким образом:

foreach (range('a', 'z') as $letra) {
   print $letra;
}
 0
Author: Gabriel Rodrigues, 2015-02-04 19:54:50