PHP Array: O que são e como usar

PHP Arrays

Na Serie de PHP aqui no Blog, temos abordado alguns temas sobre a linguagem, e hoje iremos falar sobre os Arrays, o que são, como funcionam e como os podemos utilizar.

Aconselho que vejam mais artigos da Serie aqui no Blog, de forma a ampliarem o conhecimento em PHP, se for realmente esse o vosso objectivo.

O que é um Array?

O Array está presente em muitas (se não todas) as linguagens de programação.

No PHP, o Array é um mapa ordenado, que relaciona chaves ou índices a valores. Por sua vez, estes valores são guardados em memória, acessíveis através o índices/chave presente no mesmo. O Array pode guardar mais de um valor associado a um índice/chave, como iremos ver nos exemplos abaixo.

Sendo que o Array no PHP é um tipo de dado, tal como o Integer, float, string ou boolean.

Dessa forma, O Array PHP pode ser considerado um vector, onde podem ser guardados múltiplos valores, associados a uma ou mais chaves.
Existem também os Arrays multi-dimensionais, que são compostos por outros Arrays.

Como utilizar um Array?

Sendo que o Array é um tipo de dado, podemos dizer que este pode ser também uma variável. Para começar-mos a usar um Array, precisamos de criar uma variável:

<?php
$var = [];
?>

Assim, temos então o nosso primeiro array criado. Agora, precisamos de adicionar valores a este Array, recorrendo a índices/chaves para o preencher.

<?php
$var = [
  “name” => “O meu nome”
];
?>

Deste forma, temos o nosso primeiro Array criado e com valores.

Para conseguirmos ver todos os valores que estão disponíveis dentro do nosso Array, podemos “imprimir” os mesmo usando a função “print_r()” (existem outras, mas vamos concentrar-nos na utilização desta), como no exemplo abaixo:

<?php
$var = [
	“name” => “O meu nome”
];
print_r($var);
?>

Iram ser apresentados os valores que estão dentro do Array.

Como recolher um valor do Array usando a sua chave

Depois de termos um nosso Array construído e pronto a ser usado, podemos aceder aos valores do mesmo, apenas usando a chave/índice. Para este exemplo, vamos adicionar mais informação ao nosso Array, chamando a variável de “cliente”, onde ficará alguma informação sobre o “cliente”, como nome, idade, altura e peso:

<?php
$client = [
	“name” => “Paulo”,
	“age” => 18,
	“height” => 1.80,
	“weight” => 78
];
?>

De seguida, imaginemos que estamos a construir um sistema, e que recebemos um Array como o representado acima. Na página do detalhe dos nossos clientes, precisamos de mostrar o nome do mesmo. Usando a chave que identifica o nome do cliente, iremos chamar esse valor como no exemplo abaixo:

<?php
$client = [
	“name” => “Paulo”,
	“age” => 18,
	“height” => 1.80,
	“weight” => 78
];
Print_r($cliente[“name”]);
?>

Como podemos ver, na função “print_r()” adicionei mais alguma informação. Essa nova informação é o índice/chave correspondente ao valor que queremos mostras ao requisitante da mesma. Se alterarmos a chave para “age”, iremos ver o valor18”, que no caso é um inteiro (integer) pois não é adicionado ao Array usando aspas (correspondente a uma string).

PHP Array multidimensional

O exemplo de cima, vimos como declarar um Array simples. Agora vamos tratar de criar um Array multidimensional, como mais informação do nosso cliente “Paulo”.

Para criar um Array multidimensional, a premissa inicial é a mesma: criar uma variável se Array para depois a preencher com a informação:

<?php
$client = [
	“name” => “Paulo”,
	“age” => 18,
	“height” => 1.80,
	“weight” => 78,
	“address” => [
	     “street” => “Rua do Mercado”,
	     “door_number” => 2,
	     “postal_code” => “1111-222”
        ]
];
?>

No exemplo de cima, adicionamos mais uma chaveaddress”, onde dentro da mesma, adicionamos um Array com a informação da morada do nosso cliente. A chaveaddress”, torna-se um Array, e toda a forma de aceder aos dados é igual aos exemplos anteriores.

No exemplo abaixo, vou mostrar uma forma simples de aceder a informação do Array:

<?php
$client = [
	“name” => “Paulo”,
	“age” => 18,
	“height” => 1.80,
	“weight” => 78,
	“address” => [
	“street” => “Rua do Mercado”,
	“door_number” => 2,
	“postal_code” => “1111-222”
]
];
Print_r($cliente[“address”][“street”]);
?>

Neste exemplo acima, estamos a aceder a primeira chave “address”, que nos fornece os valores dentro desse Array. Podemos escolher a chave do Array address”, que no exemplo seria “street”, mostrando qual seria a rua do nosso cliente.

Mas existe mais formas de aceder a esta informação, de forma mais “visual”:

<?php
$client = [
	“name” => “Paulo”,
	“age” => 18,
	“height” => 1.80,
	“weight” => 78,
	“address” => [
	“street” => “Rua do Mercado”,
	“door_number” => 2,
	“postal_code” => “1111-222”
]
];
$adress = $client[“address”];
Print_r($adress [“street”]);
?>

Aqui recolhemos a chave “address” do Array client” para dentro de uma variável “address”. Ficamos com mais uma variável do tipo Array, a $address. Depois usando o “print_r” estamos a consultar a variável Array $address, para recolher a chave “street”.

Ambos os exemplos de acessos aos valores estão correctos, e pode ser usada. Em caso de mais complexidade do Array ou da apresentação da informação, faz sentido que se “parta” o Array multidimensional por várias variáveis.

Podem também existir situações em que não esteja definida uma chave tão nítida. Caso o Array não seja construído com base em chaves, como o exemplo abaixo, a forma de acesso aos seus valores é semelhante, mas com recurso a outros índices:

<?php
$client = [
	"name" => "Paulo",
	"age" => 18,
	"height" => 1.80,
	"weight" => 78,
	"address" => [
	    "Rua do Mercado",
	    2,
	    "1111-222"
]
];
print_r($client["address"][0]);
?>

No exemplo acima, estamos a imprimir nada mais que primeira posição da “address” do cliente. Como não definimos nenhuma chave para nenhuma das 3 entradas, o PHP adiciona chaves numéricas, de forma a conseguirmos aceder aos seus valores em memoria. Nada mais é do que um apontador de memoria.

Adicionar e actualizar valores a um Array existente

Quando um Array é criado e são adicionados valores, podemos a qualquer momento adicionar qualquer valor adicional nesse mesmo Array:

<?php
$client = [
	"name" => "Paulo",
	"age" => 18,
	"height" => 1.80,
	"weight" => 78,
	"address" => [
	    "Rua do Mercado",
	    2,
	    "1111-222"
    ]
];
$client["gender"] = "Male";
print_r($client);
?>

Baste-nos definir a chave e o valor que queremos, e dessa forma, temos um novo valor adicionado ao Array. Aqui colocamos o género do nosso cliente.

Desta mesma forma, também podemos actualizar dados dentro do nosso Array:

<?php
$client = [
	"name" => "Paulo",
	"age" => 18,
	"height" => 1.80,
	"weight" => 78,
	"address" => [
	    "Rua do Mercado",
	    2,
	    "1111-222"
    ]
];
$client["gender"] = "Male";
$client["age"] = 19;
print_r($client);
?>

No caso acima, actualizamos a idade do nosso cliente de 18 para 19.

Claro que aqui, usando estes exemplos, também podemos criar Array multi-dimensionais dentro do Array já existente:

<?php
$client = [
	"name" => "Paulo",
	"age" => 18,
	"height" => 1.80,
	"weight" => 78,
	"address" => [
	    "Rua do Mercado",
	    2,
	    "1111-222"
    ]
];
$client["gender"] = "Male";
$client["contact_info"] = [
    "email" => "paulo@email.com",
    "phone" => "123456789"
];
print_r($client);
?>

Adicionamos a informação de contacto do nosso cliente, dentro do nosso Array, mas usando um Array multidimensional. Da mesma forma que adicionar o género e actualizamos a idade, podemos também adicionar um novo Array com mais informação.

Também é possível recorrer a outras funções para adicionar valores num Array, como no inicio ou final do mesmo:

<?php
$client = [
	"name" => "Paulo",
	"age" => 18,
	"height" => 1.80,
	"weight" => 78,
	"address" => [
	    "Rua do Mercado",
	    2,
	    "1111-222"
    ]
];
$client["gender"] = "Male";
$client["contact_info"] = [
    "email" => "paulo@email.com",
    "phone" => "123456789"
];
// Inicio do Array
array_unshift($client, 'Some value');
// Final do Array
array_push($client, 'Some value');
print_r($client);
?>

Remover valores de um Array

Tal como podemos adicionar, remover também é uma possibilidade. Dessa forma existem várias formas. No exemplo abaixo, apresento duas delas, remover o primeiro e ultimo elemento do Array:

<?php
$client = [
	"name" => "Paulo",
	"age" => 18,
	"height" => 1.80,
	"weight" => 78,
	"address" => [
	    "Rua do Mercado",
	    2,
	    "1111-222"
    ]
];
$client["gender"] = "Male";
$client["contact_info"] = [
    "email" => "paulo@email.com",
    "phone" => "123456789"
];
// Inicio do Array
array_unshift($client, 'Some value');
// Final do Array
array_push($client, 'Some value');
// Remover o primeiro elemento do Array
array_shift($client);
// Remover o ultimo elemento do Array
array_pop($client);
print_r($client);
?>

Ordenar um Array

Os Arrays PHP podem ser ordenados de várias formas e ordens. Existem funções que o PHP disponibiliza para ajudar nessa mesmas ordenação:

  • sort () – ordem crescente
  • rsort () – ordem decrescente
  • asort () – arrays associativos em ordem crescente, de acordo com o valor
  • ksort () – arrays associativos em ordem crescente, de acordo com a chave
  • arsort () – arrays associativos em ordem decrescente, de acordo com o valor
  • krsort () – arrays associativos em ordem decrescente, de acordo com a chave

Remover valores repetidos do Array

Pode acontecer que em alguns casos possa existir valores repetidos num Array, e o PHP tem uma função que ajuda na eliminação desses valores, com a função “array_unique()”:

<?php 
$clients = [
    "João",
    "Pedro",
    "Carlos",
    "João",
    "Manuel"
];
print_r(array_unique($clients));
?>

Neste exemplo, o Array Clients” tem dois clientes com o nome “João“. Considerando o mesmo como repetido, e usando a função “array_unique”, o resultado retornado eliminará o última entrada com o valor “João”.

Misturar Arrays

É também possível misturar dois Arrays. Para o caso, precisamos de definir dois Arrays, e usar a função “array_merge” para o efeito:

<?php 
$clients1 = [
    "João",
    "Pedro",
    "Carlos",
    "João",
    "Manuel"
];
$clients2 = [
    "Francisco",
    "Telma",
    "Ana",
    "Sofia"
];
print_r(array_merge($clients1, $clients2));
?>

No caso acima, o retorno será apenas um Array, com todos os valores num só.

Conclusão

Existem muitas mais possibilidades dentro do mundo dos Arrays em PHP. Aconselho sempre que seja lida a documentação que o PHP disponibiliza, gratuitamente em https://www.php.net/, para esclarecer algumas questões, e ver outras possibilidades que existem.

Ajuda-nos a evoluir!

Mais desta serie

Continuamos a trabalhar de forma a trazer mais informação de programação Web e programação em geral. Acompanha a página no Facebook, para ficares sempre a par das novidades sobre esta e outras serie, produtos, entre outros temas.

Podes também ver todos os código que disponibilizo aqui no blog, entre outras coisas, na minha página no Github.