Leandro Vieira Pinho´s Blog

Just another WordPress weblog

Archive for 'unset'

Função PHP para remover “keys” de um Array

January 26th, 2008. Published under array, php, unset. 6 Comments.

Acabei de criar um função em PHP para remover “keys” de um Array.

Considere o array abaixo:

$array = array (

'nome' => 'Leandro',

'sobrenome' => 'Vieira Pinho',

'email' => 'spam@efoda.com'

);

E considere também que você deseja excluir a key “email”, por exemplo. Portanto, o procedimento seria o seguinte:

unset( $array['email'] );

Logo, a estrutura do Array se modificaria com a ação executada. Resultando em:

$array = array (

'nome' => 'Leandro',

'sobrenome' => 'Vieira Pinho'

);

Quando houver necessidade de remover várias “keys” de um Array, utilizaremos várias vezes a função unset como exemplificado acima. Para simplificar meu trabalho, criei uma função intitulada como remove_key_from_array. Nela utilizo a função unset quantas vezes for necessário para remover as “keys” desejadas do um array, de acordo com os parâmetros passado à função.

Exemplo de uso da função considerando o array demonstrado acima.

print_r( remove_key_from_array( $array, array(’sobrenome’,'email’) ) );

O resultado seria:

Array ( [nome] => Leandro )

Abaixo o código da função.

/**
* This function remove specified key from a given array
*
* @version 0.1
* @author Leandro Vieira Pinho
* @date Saturday, January 26, 2008
* @param array $array Array that contains the keys to be removed
* @param mixed $keys String with the key name; or, an Array with the keys names
* @return array Return the given array without the specified key(s)
*/
function remove_key_from_array( $array, $keys )
{
if ( is_array( $keys ) )
foreach( $keys as $key )
unset( $array[$key] );
else
unset( $array[$keys] );
return $array;
}

[UPDATE]Nova versão. Obrigado Fernando pela sugestão. [/UPDATE]

/**
 * This function remove specified key from a given Array and reindex it, if wanted.
 *
 * @version 0.2
 * @author Leandro Vieira Pinho
 * @date Monday, January 28, 2008
 * @param array $array Given Array that contains the keys to be removed
 * @param array $keys Array with the keys names
 * @param boolean $reindex Use "true" if you want to reindex the given array or convert associative array in indexed; "false" is default.
 * @return array Return the given array without the specified key(s)
 */
function remove_key_from_array( $array, $keys, $reindex = false )
{
	$keys = (array) $keys;
	foreach( $keys as $key )
		unset( $array[$key] );
	return ( $reindex ) ? $array = array_values( $array ) : $array;
}

Se lhe for útil, faço bom proveito.