Diário Code - Uma xícara de café e um bule em cima de uma mesa.

Diário Code

Aprenda Python, JavaScript e PHP

Como converter uma String para Array em PHP

9 visualizações |

Desenho de uma cozinha organizada cada item em seu devido lugar.

Manipular dados é essencial na programação, e na maioria das vezes, os dados são obtidos no formato string, numa sequência de texto padronizado. Por isso, seria muito bom se pudéssemos converter essa informação para uma array. A boa notícia é que isso não é uma tarefa impossível.

Vamos ver no exemplo abaixo como criar uma Array a partir de uma string. Vamos utilizar para nossa explicação a tabela em CSV a seguir, que representa um cadastro de clientes de uma empresa:

ID,Cadastro,Nome,Rua,Número,Cidade,País
1,2023-01-15,João Silva,Rua das Flores,123,São Paulo,SP,Brasil
2,2023-02-20,Maria Oliveira,Avenida Brasil,456,Rio de Janeiro,RJ,Brasil
3,2023-03-10,Carlos Pereira,Rua das Palmeiras,789,Belo Horizonte,MG,Brasil
4,2023-04-25,Sophie Martin,Rue de la Paix,88,Paris,Île-de-France,França
5,2023-05-30,Liam Johnson,Oxford Street,123,London,England,Reino Unido
6,2023-06-18,Anna Müller,Marienplatz,789,Munich,Bavaria,Alemanha
7,2023-07-22,Juan Carlos,Avenida de América,404,Madrid,Madrid,Espanha
8,2023-08-14,Isabela Lima,Avenida Paulista,505,São Paulo,SP,Brasil
9,2023-09-05,Ricardo Alves,Rua do Ouro,606,Brasília,DF,Brasil
10,2023-10-28,Juliana Mendes,Rua das Pedras,707,Fortaleza,CE,Brasil
11,2023-11-01,Louis Dubois,Rue du Bac,202,Paris,Île-de-France,França
12,2023-12-10,Emily Wilson,Baker Street,404,London,England,Reino Unido
13,2024-01-05,Hans Schmidt,Alexanderplatz,505,Berlin,Berlin,Alemanha
14,2024-02-20,Miguel Fernández,Gran Vía,606,Barcelona,Catalonia,Espanha
15,2024-03-15,Kaito Nakamura,Shibuya,707,Tokyo,Tokyo,Japão
16,2024-04-10,Yumi Tanaka,Akihabara,808,Tokyo,Tokyo,Japão

Algumas características importantes dessa tabela são as seguintes:

Primeiro: a primeira linha contém os nomes das colunas;

Segundo: cada coluna tem um tipo diferente de dado. Por exemplo: a coluna ID contém números (integer), enquanto as colunas Nome em diante contém texto (string);

e Terceiro: os dados das colunas estão separados por vírgulas;

Realizada essa análise inicial, ficará mais fácil converter essa tabela numa matriz. Vamos aprender como fazer isso.

A função explode

Em PHP, há uma função chamada explode ( ) que tem por objetivo gerar uma Array a partir de uma string usando como referência um caractere separador. Não concorda que é exatamente disso que estamos precisando agora? Veja como utilizar essa função.

A função explode ( ) aceita 3 argumentos, como se pode ver na sintaxe dela abaixo:

explode ( 
 string $separator, 
 string $string, 
 int $limit = PHP_INT_MAX
)

Agora, entenda o que cada argumento significa:

$separator Obrigatório. É a expressão no formato string que atua como separadora dos dados. É aquela expressão que "quebra" a string em pedaços, por assim dizer. No exemplo vamos executar a seguir, o nosso separador é o caractere de escape \n chamado de "quebra de linha" e o caractere vírgula (,).

$string Obrigatório. É a expressão no formato string que se deseja separar. No exemplo da tabela, nossa expressão a ser quebrada será a tabela em si, que não passa de uma grande cadeia de caracteres, e cada linha da tabela.

$limit Opcional. É a quantidade máxima de elementos que se deseja obter. Por padrão, o valor será a constante PHP_INT_MAX. No nosso caso, poderíamos usar como limite o número de colunas da tabela, mas se não utilizarmos esse argumento não haverá problemas.

PHP_INT_MAX é uma constante pré-definida do PHP e representa o maior número inteiro suportado numa instalação do PHP. Para sistemas de 32 bits, o valor máximo geralmente é o inteiro 2.147.483.647 (2 bilhões, 147 milhões . . .), e em sistemas de 64 bits, o valor máximo é 9.223.372.036.854.775.807 (9 quintilhões, 223 quatrilhões . . .).

Com essas explicações, podemos agora seguir em frente e separar os dados.

No exemplo abaixo, a variável $table já recebeu os dados da tabela e agora vamos processá-los com a função explode. Observe que teremos que usar essa função 2 vezes, uma para separar as linhas e outra para separar as células de cada linha. Veja como fica:

// Irá receber os dados da tabela
$data = [ ];

// separa as linhas
$lines = explode ( "\n", $table);

// lê linha por linha
foreach($lines as $line){

    // separa as células das linhas
    $cell = explode(",", $line);

    // adiciona cada célula à variável $data
    array_push($data, $cell);
}

// exibe alguns resultados
echo $data[2][5] . "
"; echo $data[2][6] . "
"; echo $data[2][7] . "
"; echo $data[6][4] . "
"; echo $data[6][5] . "
";

Como falado antes, não é necessário usar o argumento $limit nesse caso porque a quantidade de dados que temos de processar é pequena e previsível. Mas, usamos os dois primeiros argumentos da função explode ( ): $separator e $string.

No primeiro uso de explode ( ) (como pode ver abaixo)

$lines = explode ("\n", $table);

criamos uma array chamada $lines. Veja que $separator contém a expressão especial \n que significa "quebra de linha" com o objetivo de separar as linhas da string $table.

Dessa forma, foi possível usar um loop em cada uma das linhas para se obter os valores em cada célula. Para obter os valores de cada célula, usamos novamente a função explode ( ), como se vê no código:

$cells = explode(",", $line);

Nesse segundo uso de explode ( ), separamos cada célula através do caractere vírgula (,), gerando uma Array chamada $cell. Em seguida, essa Array foi adicionada a outra Array chamada $data usando a função array_push ( ).

Esse processo foi se repetindo linha por linha até a última linha da tabela. No fim, obtivemos uma Matriz de Arrays chamda $data. Veja que é possível acessar os dados da tabela através dos índices da matriz $data, onde o primeiro número é a linha e o segundo número representa a coluna.

Assim, o código acima retorna o seguinte:

Rio de Janeiro
RJ
Brasil
789
Munich

Conclusão

De maneira bastante simplificada, convertemos uma tabela para uma Matriz. Percebeu que, apesar do objetivo de explode ( ) ser simples, quando ele é usado num ambiente de repetição, os resultados podem se tornar cada vez mais complexos. Então, é muito importante nos seus estudos de programação entender o que cada operação realiza separadamente para depois construir sistemas mais complexos.

Tenho certeza que você vai querer usar a função explode ( ) sempre que puder! d :

Aprenda mais com outros artigos relacionados