Classificação dinâmica de array com array_multisort()
Em um script PHP, você pode encontrar a necessidade de classificar arrays com regras de classificação variadas com base em condições específicas. A função array_multisort() fornece uma maneira conveniente de classificar arrays usando vários campos, mas sua estrutura de parâmetros fixa limita sua flexibilidade. Para resolver essa limitação, vamos explorar uma solução que permite regras de classificação dinâmica.
Manipulação dinâmica de parâmetros
Para ativar a manipulação dinâmica de parâmetros, podemos criar uma string contendo o regras e parâmetros de classificação. Essa string pode ser construída usando os campos de classificação e ordens de classificação desejados, separados por vírgulas. Por exemplo, a string a seguir representa uma classificação dinâmica em dois campos, ambos em ordem crescente:
$dynamicSort = "$sort1,SORT_ASC,$sort2,SORT_ASC";
Usando call_user_func_array
A função call_user_func_array() do PHP nos permite chamar uma função com uma matriz de parâmetros. Podemos utilizar esta função para passar os parâmetros dinâmicos para array_multisort(). Veja como ficaria:
$param = array_merge(explode(",", $dynamicSort), array($arrayToSort)) call_user_func_array('array_multisort', $param)
Neste exemplo, explodimos a string $dynamicSort em parâmetros individuais, mesclamos-a com $arrayToSort e passamos a matriz resultante para call_user_func_array. Isso chama array_multisort() dinamicamente com as regras de classificação especificadas.
Essa abordagem fornece flexibilidade na definição de regras de classificação e permite fácil modificação do comportamento de classificação sem a necessidade de modificar o código principal.
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