"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 converter arrays PHP multidimensionais em arrays 2D com chaves de notação de pontos?

Como converter arrays PHP multidimensionais em arrays 2D com chaves de notação de pontos?

Publicado em 15/01/2025
Navegar:342

How to Convert Multidimensional PHP Arrays to 2D Arrays with Dot Notation Keys?

Converter matrizes PHP multidimensionais em matrizes 2D com chaves de notação de ponto

Achatar matrizes PHP multidimensionais em matrizes 2D com chaves de notação de ponto pode ser benéfico em vários cenários. Ele permite que você acesse perfeitamente valores de array aninhados usando notação de ponto, o que melhora a legibilidade e a manutenção do código.

Função recursiva para converter arrays aninhados

Felizmente, o PHP fornece uma função que pode alcançar essa conversão com elegância:

$result = array();
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));

foreach ($ritit as $leafValue) {
    $keys = array();
    foreach (range(0, $ritit->getDepth()) as $depth) {
        $keys[] = $ritit->getSubIterator($depth)->key();
    }
    $result[join('.', $keys)] = $leafValue;
}

Explicação:

  • As classes RecursiveIteratorIterator e RecursiveArrayIterator são usadas para iterar recursivamente pela matriz aninhada.
  • Durante cada iteração, o O método key do RecursiveArrayIterator é usado para capturar a chave atual do array.
  • O método getSubIterator($profundidade) é usado para recuperar o subiterador em uma profundidade específica, permitindo-nos iterar por meio de matrizes aninhadas.
  • The range(0, $ritit- A função >getDepth()) cria uma matriz de profundidades, atravessando da matriz mais interna até a matriz mais externa.
  • A função join('.', $keys) concatena as chaves da matriz com um ponto(.) como separador, criando a chave de notação de ponto.
  • O par chave-valor resultante é armazenado na matriz $result.

Saída:

Esta função irá gerar o array 2D desejado com teclas de notação de ponto:

$newArray = array(
    'key1' => 'value1',
    'key2.subkey' => 'subkeyval',
    'key3' => 'value3',
    'key4.subkey4.subsubkey4' => 'subsubkeyval4',
    'key4.subkey4.subsubkey5' => 'subsubkeyval5',
    'key4.subkey5' => 'subkeyval5'
);
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