Legacy tiagomadeira.net

PHP: Array de Caracteres != String

ATENÇÃO! Você está acessando um conteúdo provavelmente desatualizado que não reflete a minha opinião atual.
Este site deixou de ser atualizado em junho de 2008.

Se você quiser ler o que escrevo atualmente, entre no meu novo blog.

Já não é a primeira vez que eu vou fazer uma aplicação em PHP e quero usar uma função de arrays numa string. Como um bom dicípulo da linguagem C, aprendi que uma string é um array de chars. O PHP tenta fazer algo parecido com isso, aceitando que possamos acessar caracteres da string com $string[indice]; porém, não sei por quê, não podemos usar funções de array nas strings e vice-versa.

Vamos supor que eu queira fazer algo simples: usar a função shuffle() numa string (criar um anagrama qualquer de uma string). Aí o PHP me força a fazer isso aqui:

$mensagem="anagrama";
$array=Array();
for ($i=0; $i $array[]=$mensagem[$i];
}
shuffle($array);
$mensagem="";
for ($i=0; $i $mensagem.=$array[$i];
}
?>

Pô… É um código muito feio! Quer dizer… Se o C tivesse a função shuffle() (ou o PHP “soubesse” que strings não passam de array de chars), bastaria fazer:

$mensagem="anagrama";
shuffle($mensagem);
?>

Economia de cérebro, de banda, de código, de dedos… De tudo!

Então, cheguei a conclusão de que eu é que devo estar entendendo algo errado. Alguém conhece uma maneira do PHP tratar strings como arrays? Andei procurando no manual e achei a função settype(), mas ela não faz o que eu quero, porque converte uma string para um array de strings!

One Response to “PHP: Array de Caracteres != String”

  1. Você pode usar a função str_split($string)

    OBS: php5 somente.

Leave a Reply