Array (vetor): como funciona, tipos e exemplos em código

Array (vetor) é uma estrutura de dados que guarda uma sequência ordenada de elementos, cada um acessível por um índice numérico que normalmente começa em zero. Na implementação clássica, os itens ocupam posições contíguas de memória, o que permite ler qualquer posição em tempo constante, O(1). Arrays sustentam catálogos de produtos, listas de leads, respostas de APIs e boa parte do código de WordPress e WooCommerce.

TL;DR

  • O que é: coleção ordenada de elementos acessados por índice, em bloco contíguo de memória.
  • Por que importa: acesso por índice é O(1), mas busca por valor é O(n), causa comum de lentidão em sistemas web.
  • Quando usar: quando a ordem importa e o acesso é por posição ou varredura: listagens, lotes de importação e dados tabulares.

Como funciona um array?

Um array é um bloco de memória dividido em células de mesmo tamanho, no qual a posição de cada elemento é calculada a partir do índice.

O endereço do elemento i é endereço base + i × tamanho do elemento. Por isso, ler o item 0 ou o item 1.000.000 custa o mesmo. Em contrapartida, inserir ou remover no meio obriga a deslocar os elementos seguintes, operação O(n).

Memória contígua e cache do processador

Segundo Ulrich Drepper, no estudo What Every Programmer Should Know About Memory (Red Hat, 2007), acessos sequenciais a dados vizinhos aproveitam muito melhor os caches L1, L2 e L3 da CPU do que acessos espalhados pela memória. Na prática, percorrer um array costuma ser significativamente mais rápido do que percorrer uma lista ligada com o mesmo número de elementos, mesmo quando a complexidade teórica é idêntica.

Arrays estáticos vs dinâmicos

Um array estático tem tamanho fixo, como em C (int notas[30];). Um array dinâmico cresce sob demanda: quando a capacidade acaba, o runtime aloca um bloco maior e copia os elementos.

Segundo o MIT OpenCourseWare, no curso 6.006 Introduction to Algorithms (2020), essa realocação com folga geométrica garante inserção no final em tempo O(1) amortizado. É o modelo adotado pelo Array do JavaScript, pela list do Python e pelo ArrayList do Java.

Arrays multidimensionais

É um array de arrays. Matrizes, planilhas e tabelas de preço por faixa de volume usam esse formato: matriz[linha][coluna].

Para que serve um array?

O array serve para agrupar dados relacionados em uma única variável, preservando a ordem e permitindo processamento em lote.

Em vez de criar produto1, produto2 e produto3, o desenvolvedor mantém um único vetor e aplica a mesma lógica a todos os itens com laços ou métodos como map e filter. É a base de qualquer algoritmo que ordena, filtra, soma ou exporta coleções.

  • Listagens: produtos, posts e pedidos.
  • Integrações: uma API REST devolve listas em JSON, que viram arrays no código.
  • Base de outras estruturas: pilhas, filas, heaps e tabelas hash são implementadas sobre vetores.

Array em JavaScript, PHP e Python

Cada linguagem implementa o array de forma diferente, e conhecer essa diferença evita bugs e gargalos.

Segundo o Stack Overflow Developer Survey (2024), JavaScript é a linguagem mais usada entre desenvolvedores (62,3%), seguida por Python (51%) e, mais atrás, PHP (18,2%).

JavaScript

Segundo a MDN Web Docs (Mozilla, 2024), arrays em JavaScript são redimensionáveis, indexados a partir de zero e podem conter valores de tipos diferentes. Métodos como sort() e reverse() alteram o array original; toSorted(), introduzido no ES2023, devolve uma cópia.

const pedidos = [{ id: 1, total: 850 }, { id: 2, total: 12400 }];
const grandes = pedidos.filter(p => p.total >= 10000);
const ordenados = pedidos.toSorted((a, b) => b.total - a.total);

PHP

Segundo o manual oficial (PHP.net, 2024), um array em PHP é, na verdade, um mapa ordenado: a mesma estrutura funciona como lista indexada, dicionário, pilha e fila. Por isso, isset($mapa[$chave]) é uma consulta por hash, enquanto in_array() percorre todos os valores.

$precos = ['SKU-001' => 49.90, 'SKU-002' => 89.00];
if (isset($precos['SKU-002'])) {
    echo $precos['SKU-002'];
}

Python

Segundo o Design and History FAQ da documentação oficial do Python (Python Software Foundation, 2024), a list do CPython é um array de tamanho variável de referências, e não uma lista ligada. Acesso por índice é O(1); valor in lista é O(n).

leads = ["ana@empresa.com", "joao@industria.com"]
leads.append("carla@distribuidora.com")
print(leads[-1])  # último elemento

Array vs lista ligada vs objeto/hash map

A escolha entre array, lista ligada e hash map depende da operação mais frequente: acesso por posição, inserção no meio ou busca por chave.

Operação Array (dinâmico) Lista ligada Objeto / hash map
Acesso por índice O(1) O(n) Não se aplica (acesso por chave)
Busca por valor ou chave O(n), ou O(log n) se ordenado O(n) O(1) em média
Inserção no final O(1) amortizado O(1) com ponteiro de cauda O(1) em média
Inserção no início ou meio O(n) O(1) após localizar o nó Não se aplica
Preserva ordem Sim Sim Depende da linguagem
Uso de cache da CPU Excelente Ruim Moderado
Caso típico Listagens e lotes Filas com muitas inserções Consultas por ID, SKU ou e-mail

Segundo a MDN Web Docs (Mozilla, 2024), o método Set.prototype.has() é, em média, mais rápido que Array.prototype.includes() quando os dois têm o mesmo número de elementos. Para dados ordenados com buscas frequentes, vale considerar uma árvore binária.

Exemplos de array na prática

Os ganhos de performance com arrays vêm menos da estrutura em si e mais de combiná-la com a estrutura auxiliar certa. Os cenários abaixo são típicos de projetos B2B brasileiros.

Exemplo 1: catálogo de e-commerce B2B no WooCommerce

Uma distribuidora de peças industriais com 18 mil SKUs recebia diariamente uma planilha do ERP com preços. O script usava in_array() em cada linha para saber se o SKU existia: até 324 milhões de comparações.

  • Antes: importação de cerca de 25 minutos, com timeouts frequentes no PHP.
  • Depois: o array foi indexado por SKU com array_flip(), transformando cada verificação em consulta por chave. A mesma carga passou a rodar em poucos segundos.
$indice = array_flip($skus_existentes); // SKU => posição
foreach ($linhas_erp as $linha) {
    if (isset($indice[$linha['sku']])) {
        // atualizar preço
    }
}

Exemplo 2: deduplicação de leads para automação de marketing

Uma empresa de software B2B cruzava 50 mil leads de feiras com 200 mil contatos do CRM usando if email in base, com base sendo uma lista em Python: até 10 bilhões de comparações.

  • Antes: processamento de horas, rodando de madrugada.
  • Depois: a base virou um set, com busca O(1) em média. O cruzamento caiu para menos de um segundo, e a lista final seguiu ordenada em array para exportação.

Exemplo 3: itens de pedido no WooCommerce

No WordPress, funções como get_posts() retornam arrays de objetos WP_Post. No WooCommerce, $order->get_items() devolve um array de itens, útil para calcular frete por peso ou desconto por volume.

$order = wc_get_order($order_id);
$peso_total = 0;
foreach ($order->get_items() as $item) {
    $produto = $item->get_product();
    if ($produto) {
        $peso_total += (float) $produto->get_weight() * $item->get_quantity();
    }
}

Segundo a W3Techs (2025), o WordPress está presente em cerca de 43% de todos os sites da internet, e o PHP é usado em mais de 70% dos sites com linguagem de servidor identificada.

Complexidade Big O das operações em Array

A complexidade Big O define o custo assintótico de cada operação — arrays têm acesso constante O(1) por índice, mas inserções e remoções no meio custam O(n) porque exigem deslocamento dos elementos vizinhos. Segundo Cormen et al. (CLRS, 2022), essa característica torna arrays ideais para leitura intensiva e inadequados para inserções frequentes em posições arbitrárias.

Operação Complexidade Observação
Acesso por índice O(1) Constante, ideal para lookups
Busca linear O(n) Precisa varrer todos os elementos
Inserção no final O(1) amortizado Realocação ocasional em arrays dinâmicos
Inserção no início/meio O(n) Precisa deslocar elementos
Remoção no final O(1) Sem deslocamento necessário
Remoção no início/meio O(n) Precisa recompactar array

Segundo ECMA-262 (2024), a especificação oficial de JavaScript não garante O(1) amortizado universalmente — engines como V8 usam otimizações internas (SMI arrays, HOLEY arrays) que podem alterar constantes em cenários específicos.

Erros comuns ao trabalhar com arrays

A maior parte dos bugs com arrays nasce de três armadilhas: índice fora do intervalo, mutação inesperada e busca linear em volume alto.

Erro off-by-one

Como o índice começa em zero, o último elemento está em length - 1. Um laço com <= lê uma posição inexistente: undefined em JavaScript, IndexError em Python.

for (let i = 0; i <= itens.length; i++) { /* errado */ }
for (let i = 0; i < itens.length; i++) { /* correto */ }

Mutação acidental

Em JavaScript e Python, atribuir um array a outra variável copia a referência, não os dados. Ordenar a “cópia” com sort() altera também o original. Use toSorted(), spread ([...lista]) ou lista.copy() no Python. Em PHP, arrays são copiados por valor, mas objetos dentro deles continuam compartilhados.

Busca linear em arrays grandes

includes(), in_array() e in são O(n); dentro de outro laço, viram O(n × m). Para verificar existência, crie um índice com Set ou array associativo. Com dados ordenados, um algoritmo de busca binária reduz o custo para O(log n).

Como escolher e implementar arrays: passo a passo

Usar arrays com eficiência é uma decisão de modelagem, tomada antes de escrever o primeiro laço.

  1. Identifique a operação dominante: leitura por posição, varredura, inserção no meio ou busca por chave.
  2. Estime o volume: acima de dezenas de milhares de itens com buscas repetidas, crie um índice.
  3. Escolha a estrutura: array para ordem e lote; hash map ou Set para consulta por ID.
  4. Prefira operações imutáveis quando o array é compartilhado.
  5. Ordene uma vez, busque muitas: um algoritmo de ordenação O(n log n) seguido de buscas binárias compensa com muitas consultas.
  6. Processe em lotes: evite posts_per_page => -1 em bases grandes, que estoura o memory_limit do PHP.
  7. Meça com console.time(), microtime(true) ou timeit antes e depois.

Arrays por contexto e segmento

O array é o mesmo conceito em qualquer segmento, mas o gargalo típico muda conforme o tipo de operação.

  • E-commerce B2B: tabelas de preço por cliente e variações de produto; o gargalo aparece na sincronização com ERP.
  • SaaS: eventos, logs e permissões por usuário, com paginação e índices por ID.
  • Agências: menus e campos personalizados são gravados como arrays serializados no WordPress.
  • Indústria: leituras de sensores usam arrays numéricos densos, geralmente com NumPy.

Array e a Shiftmind

Na Shiftmind, arrays PHP bem modelados fazem parte do trabalho diário em projetos WordPress e WooCommerce de alta carga. Há mais de 12 anos a equipe desenvolve e mantém sites B2B, e boa parte das otimizações de performance começa por revisar como o código percorre e busca dados.

Na criação de sites WordPress, estruturamos campos e listagens sem laços redundantes. Em lojas de e-commerce B2B, otimizamos importações de catálogo e integrações com ERP que manipulam milhares de SKUs.

Quando um site começa a apresentar lentidão ou erros de memória, o suporte e manutenção WordPress identifica rotinas que carregam arrays gigantes, e a hospedagem WordPress é configurada com limites de memória e versão de PHP adequados ao volume.

Para aplicações com arrays de alta dimensionalidade — como catálogos com milhões de produtos ou pipelines de machine learning — a Shiftmind oferece servidores dedicados com RAM otimizada e discos NVMe, garantindo que estruturas em memória escalem sem gargalo.

Perguntas frequentes sobre array

Qual a diferença entre array e vetor?

Na prática, são sinônimos. “Vetor” é a tradução mais usada em cursos e livros brasileiros de algoritmos, enquanto “array” é o termo da documentação das linguagens. Em C++ existe std::vector, um array dinâmico, e em Python o equivalente é a list. Em todos os casos, trata-se de uma coleção ordenada de elementos acessados por índice numérico, geralmente começando em zero.

Por que o índice de um array começa em zero?

Porque o índice representa o deslocamento a partir do início do bloco de memória. O primeiro elemento está a zero posições do endereço base, o segundo a uma posição, e assim por diante. A convenção vem de linguagens como C e simplifica o cálculo do endereço. Lua, MATLAB e R usam índice inicial 1, o que exige atenção ao integrar sistemas.

Qual a complexidade de busca em um array?

Acessar um elemento pelo índice é O(1). Buscar um valor sem conhecer sua posição é O(n), porque no pior caso é preciso percorrer todos os elementos. Se o array estiver ordenado, a busca binária reduz o custo para O(log n): em 1 milhão de itens, são cerca de 20 comparações. Para buscas frequentes por chave, um hash map é mais indicado.

Array em PHP é igual a array em JavaScript?

Não. Em PHP, todo array é um mapa ordenado que aceita chaves numéricas e textuais, funcionando como lista e dicionário ao mesmo tempo. Em JavaScript, o Array é voltado a índices numéricos, e pares chave-valor ficam em objetos ou em Map. Além disso, PHP copia arrays por valor na atribuição, enquanto JavaScript copia apenas a referência.

Quando usar lista ligada em vez de array?

Lista ligada faz sentido quando há muitas inserções e remoções no início ou no meio da coleção e pouco acesso por posição, como em algumas filas e caches LRU. Na maioria das aplicações web, o array dinâmico vence: tem acesso O(1), usa melhor o cache da CPU e é nativo das linguagens. Meça o desempenho real antes de trocar.

Termos relacionados

Conclusão

O array combina simplicidade, acesso O(1) por índice e ótimo aproveitamento do cache do processador. Seus limites aparecem na busca por valor e na inserção no meio, e é aí que índices por chave, ordenação prévia e lotes fazem diferença em catálogos, bases de leads e lojas WooCommerce. Array acessa por posição em O(1); hash map acessa por chave em O(1) em média; saber qual pergunta o código faz define qual estrutura usar.

Última atualização: Setembro/2026

Seu site WordPress ou loja WooCommerce está lento com grandes volumes de produtos e pedidos? A Shiftmind pode ajudar. Entre em contato.

Autor: Henry Douglas
Analista de marketing digital, trabalho com SEO desde 2010 e tenho 13 anos de experiência em em WordPress.

Como podemos te ajudar?

Entre em contato conosco hoje mesmo e descubra como nossa empresa de marketing pode impulsionar suas vendas, aumentar sua visibilidade online e alcançar seus objetivos de negócios.

Desenvolvemos projetos conforme as necessidades e objetivos de cada cliente, sempre com processos bem definidos e transparentes do planejamento ao controle, facilitando a comunicação com as partes interessadas e a melhoria contínua das ações de marketing implementadas.

Danilo Pedrosa
Especialista em Projetos de Marketing, Shiftmind