Fork Copy <?php $a = 1; $b = 2; function array_flatten($array) { $result = []; $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)); foreach($it as $v) { $result[] = $v; } return $result; } function my_compact($varname) { $listVars = array_flatten(func_get_args()); $result = []; foreach ($listVars as $var) { global $$var; if (isset($$var)) { $result[$var] = $$var; } } return $result; } var_dump(my_compact('1', 'b', ['c', ['d', 'e']]));