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 valor “18”, 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 chave “address”, onde dentro da mesma, adicionamos um Array com a informação da morada do nosso cliente. A chave “address”, 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.