Можно ли передавать имена индекса массива внутри функции

У меня есть небольшая функция, которая создает html-выход в соответствии с моей структурой массива $ schema.

Возможно ли иметь такой же результат с моей новой структурой массива? (Можно ли передавать индексные имена внутри функции внутри массива)

Моя исходная структура массива.

$schema = array( array( 'tag' => 'div', 'class' => 'lines', array( 'tag' => 'div', array( 'tag' => 'span', 'style' => 'margin:10px; padding:10px', 'key' => '$key-countryname', ), 'key' => '$value-country', ), array( 'tag' => 'div', array( 'tag' => 'span', 'style' => 'margin:10px; padding:10px', 'key' => '$key-countryname', ), 'key' => '$value-country', ), ) ); 

Новая структура массива, в которой я хочу иметь один и тот же вывод с функцией

 $schema = array( 'div' => array( 'class' => 'lines', 'div' => array( 'span' => array( 'style' => 'margin:10px; border:10px', 'key' => '$key-countryname', ), 'key' => '$value-country', ), 'layer' => array( 'span' => array( 'style' => 'margin:10px; border:10px', 'key' => '$key-countryname', ), 'key' => '$value-country', ) ) ); 

Моя функция

  $vals = array('Country Name' => 'Usa', 'Country Name' => 'Canada'); function get_output($schema, $vals, $t = -2){ $t++; $tag = ""; $atts = array(); $keys = array(); $code = array(); foreach($schema as $k => $v){ if(is_array($v)){ $keys[] = get_output($v, $vals, $t); } else { switch($k){ case "tag": $tag = $v; break; case "key": $keys[] = $v; break; case "type": break; default: $atts[$k] = $v; break; } } } if(0 < $t){ $code[] = "\n".str_repeat("\t", $t); } if($tag){ $code[] = "<$tag"; foreach($atts as $k=>$v){ $code[] = ' '.$k.'="'.$v.'"'; } $code[] = ">"; $code = array(implode('', $code)); } foreach($keys as $k){ $code[] = $k; } if($tag){ $code[] = "\n".str_repeat("\t", $t); $code[] = '</'.$tag.'>'; } //print_r($code); return implode("", $code); } echo get_output($schema, $vals); 

Благодарю.

Solutions Collecting From Web of "Можно ли передавать имена индекса массива внутри функции"