
Chegaram 400 linhas do SELECT num array e o que eu preciso é a linha do id 22. Se a sua primeira ideia foi um foreach com break, segura: array_column($linhas, null, 'id') devolve o mesmo conteúdo indexado pelo id, e a busca vira $porId[22] — acesso direto, sem varrer o array.
O terceiro parâmetro é o que quase ninguém usa: ele diz qual coluna vira a chave da saída. E o segundo aceita null desde o PHP 7.0, que é como você mantém a linha inteira em vez de só um campo.
$linhas = [
['id' => 10, 'nome' => 'Camiseta', 'preco' => 79.90],
['id' => 22, 'nome' => 'Caneca', 'preco' => 39.00],
];
array_column($linhas, 'nome');
// ['Camiseta', 'Caneca']
array_column($linhas, 'preco', 'id');
// [10 => 79.9, 22 => 39.0]
array_column($linhas, null, 'id');
// [10 => ['id' => 10, ...], 22 => ['id' => 22, ...]] Funciona igual com array de objetos: desde o PHP 7.0 a função lê propriedade pública pelo nome, então dá para indexar uma lista de DTOs sem escrever laço. Propriedade privada ou protegida ela só alcança se a classe tiver __isset() e __get(); sem os dois, a linha é ignorada calada.
A primeira: se a linha não tiver a coluna que você pediu, ela é descartada inteira, sem aviso e sem notice. A segunda: chave repetida sobrescreve — dois pedidos com o mesmo sku e um deles evapora.
$l = [['id' => 1], ['id' => 2, 'n' => 'b']];
var_export(array_column($l, 'n', 'id'));
// [2 => 'b'] a linha do id 1 sumiu
// guarda-chuva antes de confiar no índice
$porId = array_column($linhas, null, 'id');
if (count($porId) !== count($linhas)) {
throw new RuntimeException('id duplicado no resultado');
} Comparar os dois count custa nada e pega o caso feio antes dele virar relatório errado. Se os números não baterem, o que você precisa é agrupar por chave num foreach, e não indexar.
VPS de 2 GB onde o mysqld morre de madrugada e o site volta com erro de conexão. Como confirmar…
Regex com cinco parênteses e ninguém lembra se a data é $matches[2] ou $matches[3]. Nomeie os grupos e leia o…
Erro The consumer isn't authorized to access resources ao chamar a REST do Magento 2.4.8? Ative a integração, libere os…
Bots batendo centenas de POST por minuto no login derrubam a CPU. Configure limit_req_zone no nginx e devolva 429 antes…
Seu access.log guarda o IP inteiro dos visitantes há meses sem necessidade. Mascare o último octeto com map e log_format…
A observação do pedido chegou com ordem embutida para gerar cupom. Delimite o texto do cliente e trate a resposta…