metadata = $metadata; } public function render($bEcho = true) { $str = ""; $str .= $this->renderHelper($this->metadata); $str .= "
"; if ($bEcho) { echo $str; } else { return $str; } } protected function renderHelper($metadata) { foreach ($metadata as $key => $values) { if ( !empty($values) ) { // Build nested metadata tables recursively $r .= "{$key}"; // Associative array means met contains subkeys if (is_array($values) && self::is_assoc($values)) { $r .= ""; $r .= ""; $r .= $this->renderHelper($values); $r .= "
"; } // Numeric array means met has multiple values else if (is_array($values)) { $r .= ""; $r .= ""; foreach ($values as $val) { if (is_array($val) && self::is_assoc($val)) { $r .= ""; } $r .= "
"; $r .= ""; $r .= $this->renderHelper($val); $r .= "
"; } else { $r .= "
"; $r .= "
". wordwrap($val, 80, "
", true) . "
"; } $r .= "
"; } // Scalar value means met has one value else { $r .= ""; $r .= "
{$values}
"; } $r .= ""; } } return $r; } protected static function is_assoc($array) { return (is_array($array) && (count($array)==0 || 0 !== count(array_diff_key($array, array_keys(array_keys($array))) ))); } }