Implode – Tratamento de strings com PHP

Mês passado, quando expliquei um pouco sobre a função explode(), fiquei de explicar a função reversa deste comando. A função em questão é a implode, ela também é bastante utilizada, no caso agora, para juntar um array em uma simples string. Abaixo deixarei um pouco sobre o que estudei estes dias sobre o implode com um exemplo prático.

O básico da função  implode ()

Como dito no começo, o implode foi criado como uma função reversa ao explode(). Sendo assim, ele faz a junção dos itens de um array em uma string simples. Para a utilização da função você pode passar dois parâmetros sendo que o primeiro se tornou opcional a partir da versão 4.3 do PHP.

implode([string $separador] , array $palavras).

No código acima temos a passagem dos 2 parâmetros necessários para o funcionamento da função. O primeiro $separador será um caractere que fará a separação das strings no array dentro desta nova string formada. Apesar de não ser mais necessário  a utilização deste parâmetro, usá-lo e a forma mais comum para os diversos tratamentos utilizados hoje.

O segundo parâmetro é o array de palavras ou itens que você deseja colocar na string final. Por fim, aqui não temos um limitador igual na função explode, isto porque o limitador é o próprio array.

Dando um implode em seus arrays

Vamos à parte prática da função implode. Ela pode ser muito útil para fazer queries no MySQL utilizando a cláusula IN. Vamos dizer que tenhamos uma tabela de clientes e seus pratos preferidos. Você então deseja selecionar aqueles clientes que gostam de batatas fritas, bife de boi e arroz. Você poderia fazer uma query cheia de cláusulas OR, mas acredito que desta forma seria bem mais prático.

Tabela de clientes

+------+---------+---------------------+
| id   | nome    | prato_preferido     |
+------+---------+---------------------+
| 1    | John    | batatas fritas      |
| 2    | Ram     | bife de boi         |
| 3    | Jack    | arroz               |
| 4    | Jill    | torresmo            |
+------+---------+--------------------+

 

Tendo esta tabela em vista vamos ao código. No código abaixo fiz um simples array com os pratos que desejo, implodi o mesmo utilizando o separador ‘,’ e então fiz a query vejam só:

<?php

		//Definindo os itens da busca no array
		$arr = array('batata frita','bife de boi','arroz');

		//Fazendo o implode dos itens em uma string simples
		$query_args = implode("','",$arr);

		//definindos os dados de conexão com o banco via PDO
		$user = 'local';
		$pass = 'local';
		$dbh = new PDO('mysql:host=localhost;dbname=devel2_implode', $user, $pass);

		//Montando a query da busca filtrada
		$query = "select * from clientes where prato_preferido IN ('".$query_args."')";
		
		//Executando a query com PDO
		$resultado = $dbh->query($query);
		$resultado = $resultado->fetchAll();
		
		//Trazendo os resultados da busca
		foreach ( $resultado as $row){
			echo "<p style=\"font-weight:bold;\">".$row["nome"]."</p>";
		}			
	?>

Para a conexão com o banco utilizei o PDO do PHP, por questões de melhor segurança dos dados e etc. caso prefira pode utilizar o mysql_query ou mysqli_query. Fica a seu critério.

Como explicado acima, eu defini os filtros da minha busca dentro do array. No caso você pode popular este array através de um formulário ou de um relatório. Implodi ele para que o mesmo venha como uma string só e assim permitir a utilização dos filtros no IN do MySQL. Por fim é só fazer a busca em seu banco e imprimir os resultados. Simples neh? Confiram o resultado final e com alguns ajustes neste link.

Concluindo, o implode consegue transformar as strings dentro de um array reunindo-as em uma string simples e assim várias possibilidades surgem para tratamento posterior. Espero que esta dica tenha sido de boa ajuda. Até o próximo post, Abs.

Tenha todo o desempenho para o seu site com a Hospedagem Cloud DialHost. Servidores em cloud prontos para receber sites em PHP. Saiba Mais ou veja nossos produtos.