Postagem

Aqui é onde faço postagens de coisas que acho interessante.

Função ou método recursivo

Postagem do dia 01/01/1970 na categoria PHP



Função ou métodos recursivos são capazes de chamar ele mesmo quando necessário.
Fonte: wikipedia

Vou criar uma função que lê e imprime na tela todos os dados de um array.
O método vai imprimir todo os valores que ele achar no array e toda vez que se deparar com um array interno ele deve varrer este array e mostrar seus valores até que todo conteúdo seja lido.


<?php
function listarValor( $array = array(), $cont = 0 )
{
	foreach( $array as $key => $value ){
		if( is_array( $array[$key] ) ){
			echo ( ( $cont > 0 ) ? '), 
' : '' ) . $key . ' => ( '; listarValor( $array[$key], $cont++ ); }else{ echo $value . ', '; } } echo ( $cont == 1 ) ? ')
' : ''; }
Observe que no meio do código existe a chamada para o próprio método: listarValor( $array[$key], $cont++ );

Usando a função criada acima:

<?php
$array = array( 'Joao' => array(
				'familia' => array( 'pai' => 'Pedro',
									'mae' => 'Laura',
									'irma'=> 'Cristina' ),
				'objetos' => array( 'caneca',
									'lapis' => array( 'preto', 'azul', 'amarelo' ) ) ),
									
		 );
		 
listarValor( $array );	


O resultado impresso na tela deverá ser:

Joao => ( familia => ( Pedro, Laura, Cristina, ),
objetos => ( caneca, ),
lapis => ( preto, azul, amarelo, )
) 


A função listarValor(), varreu todo o array e seu conteúdo, pegou seus valores, organizou e mostrou na tela. Essa função, pode ser melhorada, mas a itenção aqui é apenas demonstrar dentro de uma necessidade utilizar de um método recursivo.

A vantagem desse tipo de função é na redução de código, porém almenta a complexidade e tem o risco da função entrar em loop infinito.



Deixe seus comentários abaixo: