Trabalhando com arrays no PHP
Aprenda como listar, ordenar e pesquisar arrays com PHP
Neste artigo vamos ver como trabalhar com arrays no PHP.
Vamos criar um array com alguns estados do Brasil. Vamos utilizar este array para testar os recursos que vamos aprender neste artigo. Podemos criar um array no PHP da seguinte forma:
$array_estados = array("São Paulo", "Rio de Janeiro", "Paraná", "Santa Catarina", "Rio Grande do Sul", "Minas Gerais");
print_r($array_estados);
Para saber a quantidade de elementos de um array, podemos utilizar a função count.
echo count($array_estados);
Um array é uma estrutura onde o primeiro elemento fica na posição zero. Desta forma, se que quiser saber qual é o quarto estado do array, eu faria da seguinte forma:
echo $array_estados[3];
O retorno seria "Santa Catarina".
Uma outra forma de criar arrays seria através de criação de uma array associativo. Arrays associativos são estruturas onde cada elemento é identificado por uma chave única. Nosso array de estados poderia ser criado de forma associativa da seguinte maneira:
$array_estados2 = array("SP"=>"São Paulo", "RJ"=>"Rio de Janeiro", "PR"=>"Paraná", "SC"=>"Santa Catarina", "RS"=>"Rio Grande do Sul", "MG"=>"Minas Gerais");
print_r($array_estados2);
Perceba que neste exemplo, a chave informada é a sigla do estado, e o valor é o nome do estado.
Para retornar um determinado conteúdo, basta informar a chave desejada.
echo $array_estados2["SC"];
Para retornar a primeira e última posição de um array, você pode utilizar as funções current e end
echo current($array_estados) . "
";
echo end($array_estados) . "
";
Para iterar por todos os elementos de um array existem duas formas que são as mais comuns. A forma mais antiga é utilizar o operador for.
for ($i = 0; $i < count($array_estados); $i++) {
echo $array_estados[$i];
echo '
';
}
Uma outra forma de iterar por um array é utilizar a função foreach
foreach($array_estados as $item) {
echo $item;
echo '
';
}
Vamos ver a seguir exemplos de outras operações comuns com arrays.
Para ordenar uma array no PHP, podemos utilizar a função sort.
sort($array_estados);
var_dump($array_estados);
Se você necessário ordenar o array de forma reversa, você poderia utilizar a função rsort.
rsort($array_estados);
var_dump($array_estados);
E se houver a necessidade de ordenar de forma aleatória os elementos de um array? Você pode fazer isso utilizando a função shuffle
shuffle($array_estados);
print_r($array_estados);
Para converter valores de um array, podemos utilizar a função array_map. Ela cria uma nova cópia do array com as alterações desejadas. No exemplo a seguir, vamos converter o conteúdo do array em letras maiúsculas.
$array_estados_novo = array_map(function ($item) {
$item = strtoupper($item);
return $item;
}, $array_estados);
print_r($array_estados_novo);
A função array_map recebe dois parâmetros, o primeiro é uma função que deve ser aplicada a todos os elementos do array, e a seguinte é o array que deve ser transformado. Para cada item do array, foi utilizada a funçao strtoupper para converter o conteúdo para letras maiúsculas.
Agora vamos ver como reduzir o array a apenas um valor. Para isso vamos criar primeiro uma array numérico.
$array_numerico = [1, 2, 3, 4, 5, 5, 6,7, 8, 9, 10];
Para fazer isso vamos utilizar a função array_reduce. Ela recebe 3 parâmetros, o primeiro é o array que será processado, o segundo é uma função a ser executada para cada um de seus elementos. De forma opcional, você pode informar um terceiro parâmetro, que seria a posição inicial do array, para o caso de não ser necessário processar o array inteiro.
No exemplo a seguir vamos somar todo o array.
$array_numerico = [1, 2, 3, 4, 5, 5, 6,7, 8, 9, 10];
$soma = array_reduce($array_numerico, function ($item, $acumulado) {
return $acumulado + $item;
}, 0);
echo ($soma);
Perceba que na função usada para processar cada registro, temos um parâmetro com o item atual e um parâmetro para armazenar o resultado de cada iteração.
Também é possível filtrar dados de uma array. Para isso podemos utilizar a função array_filter. No exemplo a seguir vamos criar um novo array, contendo apenas os estados que começam com a letra "S".
$array_estados_s = array_filter($array_estados, function ($item) {
return substr($item, 0, 1) == "S";
});
print_r($array_estados_s);
Esta função recebeu dois parâmetros, o primeiro foi o array que foi processado, e o segundo foi a função que foi executada para cada item do array. Utilizando a função substr, foi possível retornar o primeiro caractere de cada item.
E se houver necessidade de remover elementos de um array PHP?
Caso você tenha a necessidade de excluir elementos de um array, se você tiver a posição dele, pode utilizar a função array_splice.
array_splice($array_estados, 1,1);
print_r($array_estados);
No exemplo acima a função array_slice recebeu 3 parâmetros, o primeiro foi o array, o segundo foi a posição que desejamos excluir, que foi a segunda, e o terceiro é a quantidade de elementos que queremos excluir a partir desta posição. Como nossa resposta foi 1, ele vai excluir apenas o elemento do indice selecionado. Desta forma podemos remover elementos de um array PHP.