compact()がとるパラメータの数は可変です。 各パラメータは、変数名を値とする文字列か、変数名の配列のどちらかとする ことができます。配列は、変数名を値とする別の配列を持つことができます。 compact()はこれを再帰的に処理します。
各引数について、compact()は現在のシンボルテーブル においてその名前を有する変数を探し、変数名がキー、変数の値がそのキー に関する値となるように追加します。 端的に言うと、extract()の逆の動作をします。 追加された全ての変数を値とする出力配列を返します。
設定されていない全ての文字列は、単にスキップされます。
分かった!: 可変変数 は関数内で PHP の スーパーグローバル配列 と併用してはいけませんので、 スーパーグローバル配列を compact() に渡しては いけません。
extract()も参照ください。