PHP: Array de Caracteres != String
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:
<?php $mensagem="anagrama"; $array=Array(); for ($i=0; $i<strlen($mensagem); $i++) { $array[]=$mensagem[$i]; } shuffle($array); $mensagem=""; for ($i=0; $i<count($array); $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:
<?php $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!
Compare Preços de: notebooks, acer aspire, hp pavilion, computadores, pentium 4, nintendo wii, ps3, celulares, câmeras digitais


Você pode usar a função str_split($string)
OBS: php5 somente.
Olá Thiago, da pra simplificar o código assim:
for($i=0;$i
Pode usar str_suffle($string)