Evitando o loop for no PHP
Após conhecer outras linguagens me dei conta de que o PHP não tinha
(ou eu não conhecia) uma função ou construção que me permitisse criar
um array a partir de uma seqüência. Ruby, por exemplo, nos dá a classe
Range. Mas não é que o PHP oferece uma solução similar? Uma salva
de palmas para a função range(), por favor.
Exemplo: queremos um array com todos os números entre 5 e 15.
$arr = range(5,15);
Você ainda pode utilizar ranges de caracteres. Por exemplo, de ‘c’ a ‘r’.
$chars = range('c', 'r');
Mas o que me chamou atenção foi descobrir, após 4 anos de programação
PHP, que a construção foreach pode ser combinada com range(). Isso
torna um loop feio e arcaica como este…
for ($i = 1; $i <= 10; $i++) { ... }
… em um loop foreach muito mais agradável:
foreach (range(1, 10) as $n) { ... }
É verdade, a verbosidade continua grande. Seria interessante se tivéssemos
no PHP algo como o times do Ruby, ou mesmo each. Mas esqueça. Essas
construções só funcionam bem no Ruby (e no JavaScript, com Prototype), pois
essas linguagens tratam funções como valores de primeira classe. O PHP
deve continuar deixando as funções para escanteio em sua versão 6, então
vamos ter que continuar com nosso código ultra verboso.

December 19th, 2007 às 10:47 am
Opa! range() , legal… essa dica é quente… depois que eu descobri o list(), também, minha vida mudou hehehehe
December 19th, 2007 às 12:54 pm
Sim, a
list()também é uma baita… e o engraçado é que ela não é uma função, assim comoarray()também não é.February 19th, 2008 às 6:43 pm
olá,
gostaria de saber o que vc quer dizer com: “valores de primeira classe”, valeu.
February 20th, 2008 às 12:51 am
Quero dizer que esses valores (no caso funções) não podem ser atribuídos a variáveis, nem passados como parâmetro para outra função, nem retornados como resultado da execução de uma função. Todas essas características, por exemplo, estão presentes em Ruby e JavaScript. Se um dia você vir isto sendo válido em PHP:
Então, nesse dia, funções serão valores de primeira classe no PHP