O PHP oferece de forma nativa mais de 81 funções para manipular arrays. Essas funções permitem diversas operações. Vamos ver ao longo deste capítulo alguns exemplos. Para conhecer todas as funções de manipulação de array disponíveis no PHP, consulte o manual do PHP.
Algumas vezes é necessário contar os elementos de um array, para isso podemos utilizar a função a função count()
, ela retorna o número de posições do array.
<?php
$frutas = ['banana','maçã', 'laranja'];
echo count($frutas);
Desta forma, teremos como retorno o valor 3. Ou seja, há um total de 3 elementos dentro do array $frutas
.
Algumas funções podem ser utilizadas para acrescentar ou remover valores dentro de um array. Vejamos alguns exemplos:
Com a função array_push()
é possível adicionar um elemento no array. O novo elemento é adicionado na última posição do array.
<?php
$frutas = ['banana','maçã', 'laranja'];
array_push($frutas, "limão", "uva");
print_r($frutas);
O código acima terá como saída:
Array
(
[0] => banana
[1] => maçã
[2] => laranja
[3] => limão
[4] => uva
)
Repare que os novos elementos foram acrescentados no final do array.
A função array_unshift()
adiciona os elementos passados como argumentos no início de array.Veja o exemplo:
<?php
$cesta = ['laranja', 'banana'];
array_unshift($cesta, 'melancia', 'morango');
print_r($cesta);
O trecho de código acima terá como saída:
Array
(
[0] => melancia
[1] => morango
[2] => laranja
[3] => banana
)
A função array_shift()
retira o primeiro elemento de array. Todas as chaves numéricas são alteradas para começar a contar a de 0 (zero), enquanto chaves string permanecerão inalteradas. Veja o exemplo:
<?php
$cesta = ["laranja", "banana", "melancia", "morango"];
$fruta = array_shift($cesta);
print_r($cesta);
O exemplo acima irá imprimir:
Array
(
[0] => banana
[1] => melancia
[2] => morango
)
E laranja seria passado para $fruta.
A função array_pop()
extrai e retorna o último elemento de array, diminuindo array em um elemento. Veja o exemplo:
<?php
$cesta = ["laranja", "banana", "melancia", "morango"];
$fruta = array_pop($cesta);
print_r($cesta);
Este exemplo irá imprimir:
Array
(
[0] => laranja
[1] => banana
[2] => melancia
)
E morango será passado para $fruta
.
Os elementos contidos em um array podem ser ordenados, em ordem alfabética ou numérica e de forma crescente, ou decrescente. Para isso, utilizamos as funções envolvendo sort
.
Podemos utilizar tanto para organizar de forma crescente alfabética, como numérica a função sort()
.
Veja no exemplo abaixo um array com valores em strings. Vamos então ordenar de forma crescente.
<?php
$frutas = ['limão', 'laranja', 'banana', 'maçã'];
sort($frutas);
//imprimir o array
foreach ($frutas as $chave => $valor) {
echo "frutas[" . $chave . "] = " . $valor . PHP_EOL;
}
O exemplo acima irá imprimir.
frutas[0] = banana
frutas[1] = laranja
frutas[2] = limão
frutas[3] = maçã
Ao contrário da função sort(), podemos organizar nosso array em ordem decrescente. Para isso basta utilizar a função rsort(). Vamos usar o mesmo exemplo anterior só que dessa vez, usaremos a função rsort()
.
<?php
$frutas = ['limão', 'laranja', 'banana', 'maçã'];
rsort($frutas);
//imprimir o array
foreach ($frutas as $chave => $valor) {
echo "frutas[" . $chave . "] = " . $valor . PHP_EOL;
}
O exemplo acima irá imprimir.
frutas[0] = maçã
frutas[1] = limão
frutas[2] = laranja
frutas[3] = banana
Usamos a função asort()
para ordenar o array em ordem crescente, de acordo com o valor. Veja o exemplo:
<?php
$frutas = ['d' => 'limao', 'a' => 'laranja', 'b' => 'banana', 'c' => 'melancia'];
asort($frutas);
foreach( $frutas as $chave => $valor ){
echo "$chave = $valor" . PHP_EOL;
}
O exemplo acima irá imprimir:
b = banana
a = laranja
d = limao
c = melancia
Repare que as frutas foram ordenadas na ordem alfabética, e os índices associados a cada valor foram mantidos.
A função arsort()
ordena um array de forma que a correlação entre índices e valores é mantida. É usada principalmente para ordenar arrays associativos onde a ordem dos elementos é um fator importante. Veja o exemplo:
<?php
$frutas = ['d' => 'limao', 'a' => 'laranja', 'b' => 'banana', 'c' => 'melancia'];
arsort($frutas);
foreach( $frutas as $chave => $valor ){
echo "$chave = $valor" . PHP_EOL;
}
O exemplo acima irá imprimir:
c = melancia
d = limao
a = laranja
b = banana
A função ksort()
ordena um array pelas chaves, mantendo a correlação entre as chaves e os valores. Essa função é bastante útil principalmente para arrays associativos. Veja o exemplo:
<?php
$frutas = ['d' => 'limao', 'a' => 'laranja', 'b' => 'banana', 'c' => 'melancia'];
ksort($frutas);
foreach( $frutas as $chave => $valor ){
echo "$chave = $valor" . PHP_EOL;
}
O exemplo acima irá imprimir:
a = laranja
b = banana
c = melancia
d = limao
A função krsort()
ordena um array pelas chaves em ordem descrescente, mantendo a correlação entre entre as chaves e os valores. Essa função é bastante útil em arrays associativos. Veja o exemplo:
<?php
$frutas = ['d' => 'limao', 'a' => 'laranja', 'b' => 'banana', 'c' => 'melancia'];
krsort($frutas);
foreach( $frutas as $chave => $valor ){
echo "$chave = $valor" . PHP_EOL;
}
O exemplo acima irá imprimir:
d = limao
c = melancia
b = banana
a = laranja
Às vezes, é comum que array possua valores repetidos, principalmente se ela for muito grande. Você pode filtrar os elementos que se repetem utilizando a função array_unique()
. Dessa forma, teremos como resultado uma nova array onde todos os elementos repetidos serão removidos, permanecendo na ordem apenas o que apareceu na primeira chave de mesmo valores. Veja o exemplo:
<?php
$input = array("a" => "verde", "vermelho", "b" => "verde", "azul", "vermelho");
$result = array_unique($input);
print_r($result);
O exemplo acima irá imprimir:
Array
(
[a] => verde
[0] => vermelho
[1] => azul
)
Para comparar a diferença entre arrays você pode utilizar a função array_dif()
. Veja o exemplo:
<?php
$array1 = ["a" => "verde", "vermelho", "azul", "vermelho"];
$array2 = ["b" => "verde", "amarelo", "vermelho"];
$result = array_diff($array1, $array2);
print_r($result);
Isto irá mostrar:
Array
(
[1] => azul
)
A função array_keys()
retorna todas as chaves de um array desde que sejam dos tipos: numérica ou string.
Veja os exemplos:
<?php
$array = [0 => 100, "cor" => "vermelho"];
print_r(array_keys($array));
$array = ["azul", "vermelho", "verde", "azul", "azul"];
print_r(array_keys($array, "azul"));
$array = ["1", 1, 1, 1, "1"];
print_r(array_keys($array, "1","==="));
O exemplo acima irá imprimir:
Array
(
[0] => 0
[1] => cor
)
Array
(
[0] => 0
[1] => 3
[2] => 4
)
Array
(
[0] => 0
[1] => 4
)
Podemos utilizar a função array_key_exists()
para verificar a existência de uma chave no array.
Ela possui dois parâmetros:
-
key
: Valor para verificar. -
array
: Um array com chaves para verificar.
Exemplo:
<?php
$busca_array = [
"primeiro" => 1,
"segundo" => 4];
if (array_key_exists("primeiro", $busca_array)) {
echo "O elemento 'primeiro' está no array!";
}
OBS: A função isset()
também pode ser utilizada para verificar a existência de uma chave porém, não retorna TRUE
para valores de chave que correspondam a um valor NULL, enquanto que array_key_exists()
retorna.
Para checar se um valor existe em um array, podemos utilizar a função in_array()
. Ela retorna TRUE em caso positivo e FALSE em caso negativo.
Exemplo:
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Tem Irix";
}
if (in_array("mac", $os)) {
echo "Tem mac";
}
A segunda condicional falha pois in_array() diferencia letras minúsculas e maiúsculas. Então, a saída seria:
Tem Irix
Agora com checagem de tipos
<?php
$a = array('1.10', 12.4, 1.13);
if (in_array('12.4', $a, true)) {
echo "'12.4' encontrado com checagem de tipo\n";
}
if (in_array(1.13, $a, true)) {
echo "1.13 encontrado com checagem de tipo\n";
}
O exemplo acima irá imprimir:
1.13 encontrado com checagem de tipo
A função array_reverse()
retorna um array com os elementos na ordem inversa. Veja o exemplo:
<?php
$cesta = ["laranja", "banana", "melancia", "morango"];
$inverso = array_reverse($cesta);
print_r($inverso);
Este exemplo irá imprimir:
Array
(
[0] => morango
[1] => melancia
[2] => banana
[3] => laranja
)
A função array_sum()
calcula a soma dos elementos de um array. Veja o exemplo:
<?php
$a = [1,2,3,4,5,6,7,8,9];
$soma = array_sum($a);
echo $soma;
O resultado que o programa imprime é o valor 45.