compact() recebe um número variável de parâmetros. Cada parâmetro pode ser tanto uma string contendo o nome da variável, como um array com nomes de variáveis. Sendo um array, ele pode conter outros arrays de nomes de variáveis; compact() trata isso recursivamente.
Para cada um dos parâmetros passados, compact() procura uma variável com o nome especificado na tabela de símbolos e a adiciona no array de saída de forma que o nome da variável será a chave e o seu conteúdo será o valor para esta chave. Em resumo, ela faz o oposto de extract(). Retorna um array de saída com todas as variáveis adicionadas a ele.
Qualquer string com nome de uma variável que não exista será simplesmente ignorada.
Veja também extract().