"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 posso gerar todas as combinações e permutações possíveis de elementos dentro de um array unidimensional em PHP?

Como posso gerar todas as combinações e permutações possíveis de elementos dentro de um array unidimensional em PHP?

Publicado em 15/11/2024
Navegar:155

How can I generate all possible combinations and permutations of elements within a one-dimensional array in PHP?

PHP: Como obter todas as combinações possíveis de um array unidimensional

Neste artigo, mergulharemos em um método para recuperar todas as combinações possíveis de elementos dentro um array unidimensional em PHP. Em contraste com outras soluções, esta abordagem garante que combinações e permutações sejam consideradas.

Declaração do problema

Dada uma matriz de strings ou números, o objetivo é gerar todas as combinações possíveis de elementos, tendo em conta diferentes disposições. Por exemplo, 'Alpha Beta' e 'Beta Alpha' são combinações distintas que devem ser incluídas na saída.

Solução PHP

A solução PHP fornecida emprega um algoritmo de pesquisa recursiva em profundidade:

Detalhamento da solução

  • A função deep_picker é invocada com o array inicial, uma string vazia e uma referência de array vazia.
  • Ele faz um loop recursivo através da matriz, adicionando cada elemento ao final da string de resultado atual.
  • Sempre que a string temporária tiver elementos, ela será adicionada ao resultado array.
  • Se ainda houver elementos restantes no array de entrada, a função chama a si mesma com o array atualizado e a string temporária.
  • Se não houver mais elementos restantes, a string temporária contendo o combinação completa é adicionada à matriz de coleta.

Saída

O código fornecido produz a seguinte saída, que contém todas as combinações e permutações dos elementos no dado matriz:

Array
(
    [0] =>  Alpha
    [1] =>  Alpha Beta
    [2] =>  Alpha Beta Gamma
    [3] =>  Alpha Beta Gamma Sigma
    [4] =>  Alpha Beta Sigma
    [5] =>  Alpha Beta Sigma Gamma
    [6] =>  Alpha Gamma
    [7] =>  Alpha Gamma Beta
    [8] =>  Alpha Gamma Beta Sigma
    [9] =>  Alpha Gamma Sigma
    [10] =>  Alpha Gamma Sigma Beta
    [11] =>  Alpha Sigma
    [12] =>  Alpha Sigma Beta
    [13] =>  Alpha Sigma Beta Gamma
    [14] =>  Alpha Sigma Gamma
    [15] =>  Alpha Sigma Gamma Beta
    [16] =>  Beta
    [17] =>  Beta Alpha
    [18] =>  Beta Alpha Gamma
    [19] =>  Beta Alpha Gamma Sigma
    [20] =>  Beta Alpha Sigma
    [21] =>  Beta Alpha Sigma Gamma
    [22] =>  Beta Gamma
    [23] =>  Beta Gamma Alpha
    [24] =>  Beta Gamma Alpha Sigma
    [25] =>  Beta Gamma Sigma
    [26] =>  Beta Gamma Sigma Alpha
    [27] =>  Beta Sigma
    [28] =>  Beta Sigma Alpha
    [29] =>  Beta Sigma Alpha Gamma
    [30] =>  Beta Sigma Gamma
    [31] =>  Beta Sigma Gamma Alpha
    [32] =>  Gamma
    [33] =>  Gamma Alpha
    [34] =>  Gamma Alpha Beta
    [35] =>  Gamma Alpha Beta Sigma
    [36] =>  Gamma Alpha Sigma
    [37] =>  Gamma Alpha Sigma Beta
    [38] =>  Gamma Beta
    [39] =>  Gamma Beta Alpha
    [40] =>  Gamma Beta Alpha Sigma
    [41] =>  Gamma Beta Sigma
    [42] =>  Gamma Beta Sigma Alpha
    [43] =>  Gamma Sigma
    [44] =>  Gamma Sigma Alpha
    [45] =>  Gamma Sigma Alpha Beta
    [46] =>  Gamma Sigma Beta
    [47] =>  Gamma Sigma Beta Alpha
    [48] =>  Sigma
    [49] =>  Sigma Alpha
    [50] =>  Sigma Alpha Beta
    [51] =>  Sigma Alpha Beta Gamma
    [52] =>  Sigma Alpha Gamma
    [53] =>  Sigma Alpha Gamma Beta
    [54] =>  Sigma Beta
    [55] =>  Sigma Beta Alpha
    [56] =>  Sigma Beta Alpha Gamma
    [57] =>  Sigma Beta Gamma
    [58] =>  Sigma Beta Gamma Alpha
    [59] =>  Sigma Gamma
    [60] =>  Sigma Gamma Alpha
    [61] =>  Sigma Gamma Alpha Beta
    [62] =>  Sigma Gamma Beta
    [63] =>  Sigma Gamma Beta Alpha
)
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