Tiago Madeira Inferências aleatórias de um cérebro em versão alpha

"Só se dedicará a um assunto com toda a seriedade alguém que esteja envolvido de modo imediato e que se ocupe dele com amor. É sempre de tais pessoas, e não dos assalariados, que vêm as grandes descobertas."
(Arthur Schopenhauer)

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

Escrito por Tiago Madeira no dia 02/01/2006 às 10h 31min. Acompanhe os comentários via RSS 2.0. Você pode deixar um comentário ou fazer um trackback do seu site.

3 comentários para “PHP: Array de Caracteres != String”

  1. #1 | Alexandre Gomes Gaigalas

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

    OBS: php5 somente.

  2. #2 | Reinaldo Marques de Lima

    Olá Thiago, da pra simplificar o código assim:

    for($i=0;$i

  3. #3 | Wenderson

    Pode usar str_suffle($string)

Deixe um comentário

Dados Pessoais
  • Obrigatório.
  • Obrigatório, não publicado.
Comentário

Artigos relacionados:

Assine via RSS

Assine gratuitamente o meu blog e receba todas as atualizações na hora, em seu agregador de feeds favorito.

Seja o 231º assinante

Busca no blog

Escreva palavras-chave para buscar e clique em Pesquisar.

Busca Google

Blogs de minha autoria

Publicidade

Dreamhost

Creative Commons - Some rights reserved tiagomadeira.net © Todo o conteúdo deste blog, exceto quando especificado o contrário, está licenciado sob uma Licença Creative Commons por Tiago Madeira. Os comentários são de responsabilidade de seus respectivos autores.