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)
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