"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como filtrar linhas da matriz com base no valor da coluna que corresponde a valores específicos?

Como filtrar linhas da matriz com base no valor da coluna que corresponde a valores específicos?

Publicado em 23/12/2024
Navegar:927

How to Filter Array Rows Based on Column Value Matching Specific Values?

Subconjunto de linhas com base na inclusão de valor de coluna

Considere uma matriz, $arr1, com múltiplas colunas e uma segunda matriz plana, $arr2, contendo valores de id específicos. O objetivo é filtrar $arr1 para reter apenas as linhas onde um valor de coluna corresponde a qualquer um dos valores em $arr2.

Tentativas anteriores de usar funções de filtro ou array_search não tiveram sucesso. Uma solução prática envolve o emprego da função nativa do PHP, array_uintersect().

Esta função utiliza uma função de retorno de chamada anônima que avalia a coluna id (ou retorna ao valor do parâmetro se não estiver presente) em ambas as matrizes de entrada. A comparação verifica a igualdade entre os valores.

Dentro do retorno de chamada, o operador => é empregado para capturar as variáveis ​​​​da matriz de entrada $a e $b, e o operador ternário ?: atribui um valor de retorno não nulo .

Nos bastidores, array_uintersect realiza a classificação durante o processo de avaliação, otimizando o desempenho e executando significativamente mais rápido do que o iterativo in_array() chamadas.

O código abaixo demonstra a solução:

var_export(
    array_uintersect(
        $arr1,
        $arr2,
        fn($a, $b) =>
            ($a['id'] ?? $a)
            
Declaração de lançamento Este artigo foi reimpresso em: 1729668976 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3