Menu

PHP array_column(): pegar uma coluna de várias linhas

array_column($rows, 'email') retorna o campo email de cada linha como um array simples. Veja o argumento de chave de índice, reindexar linhas pelo id, usar com objetos e encontrar uma linha com array_search.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

array_column($rows, $column) retorna o valor de $column de cada linha numa lista de linhas. Ele transforma uma tabela de registros num array simples de um campo, que é o que você precisa antes de implode, in_array, array_sum ou array_search.

As linhas podem vir de qualquer lugar: uma resposta JSON decodificada, um arquivo CSV ou uma consulta ao banco que retornou um array de arrays associativos.

Usar a chave de índice para montar pares chave e valor

O terceiro argumento indica um campo cujo valor vira a chave de cada resultado. array_column($users, 'name', 'id') é o jeito comum de montar uma consulta de id para nome, por exemplo para uma lista <select>.

Se duas linhas tiverem o mesmo valor de índice, a linha posterior sobrescreve a anterior.

Indexar linhas inteiras pelo id com null

Passe null como coluna para manter cada linha completa, com a chave trocada pelo campo de índice. Procurar uma linha pelo id vira então um acesso direto pela chave em vez de um loop.

Monte o índice uma vez e cada consulta depois disso é instantânea, o que importa quando você procura muitos ids num loop.

Encontrar uma linha com array_column e array_search

Para descobrir qual linha tem determinado valor, busque na coluna e use a posição retornada. Verifique o resultado com !== false, porque uma correspondência na primeira linha retorna 0.

Isso depende de $users ter as chaves 0, 1, 2, porque o array_column retorna uma lista. Se o array foi filtrado e tem buracos, chame array_values($users) antes. A página sobre array_search explica em detalhe a armadilha do false e do 0.

Somar, contar ou tirar a média de uma coluna

O array_column combina bem com as funções de matemática: extraia o campo e depois some.

Para um valor calculado a partir de vários campos, como quantidade vezes preço, a ferramenta é o array_map, como na última linha.

array_column com objetos

Com uma lista de objetos, o array_column lê propriedades públicas. Propriedades privadas e protegidas não ficam visíveis para ele.

A segunda chamada retorna um array vazio: password é privada, então todos os objetos são pulados.

Linhas sem o campo são puladas

O array_column não coloca um valor substituto para uma linha que não tem o campo. O resultado pode ser menor que a entrada, então as posições deixam de corresponder às linhas.

O primeiro resultado tem dois telefones e nenhuma pista de que Bob não tinha um. Com o nome como chave de índice, você vê de quem é cada número, que é a forma mais segura sempre que algumas linhas podem não ter o campo.

Perguntas frequentes

O que faz o array_column no PHP?

Ele recebe uma lista de linhas (arrays ou objetos) e retorna o valor de um campo de cada linha: array_column($users, 'email') dá um array simples de e-mails. Linhas que não têm o campo são puladas.

Como monto um array chave e valor a partir de linhas?

Passe o campo da chave como terceiro argumento: array_column($users, 'name', 'id') retorna [id => name, ...]. Passe null como segundo argumento, array_column($users, null, 'id'), para manter as linhas inteiras indexadas pelo id.

O que o array_column faz quando falta o campo numa linha?

Ele pula essa linha, então array_column($people, 'phone') pode retornar menos valores do que há linhas, e as posições deixam de corresponder. Adicione uma chave de índice, array_column($people, 'phone', 'name'), para ver de qual linha veio cada valor.

O array_column funciona com objetos?

Sim, com um array de objetos ele lê propriedades públicas, e também propriedades disponibilizadas via __get quando a classe define __isset. Propriedades privadas e protegidas são puladas.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR