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.