我使用this function将任何类型的多维数组显示为人类可重定义的html表。例如,这个数组:
$arr = array
(
'root' => array(
'main' => array (
'members' => array(
array ('identifier' => '36', 'fullname' => 'jonathan carter'),
array ('identifier' => '42', 'fullname' => 'hello world')
)
)
)
);
成为一个表格(echo array2table($arr, true)
):
正如您所看到的,我的问题是,当多个数组只包含一个子数组时,表标题太多。这就是我想要的:
你可能会说:“你尝试了什么?” 好吧,在显示表头之前,我创建并调用了一个递归函数,如果有嵌套表,它会返回一个键数组:
function nextTableHeaders($array)
{
// requires an array with only 1 child
if (!is_array($array) || count($array) !== 1)
return array();
$key = key($array);
return array_merge(array($key), nextTableHeaders($array[$key]));
}
在这种情况下,它返回:
array('root', 'main', 'members');
然后我用'>加入值'它成了我新的表头。但我需要深入研究数组(因为我不想显示“主要>成员”和“成员”)。但我没有成功。
我将不胜感激。
答案 0 :(得分:0)
我的建议是按原样保持表格打印,并创建一个新功能,该功能将采用数组,然后将其转换为数组,在打印时将显示您希望显示的内容。
function compressArray($array) {
// Non-arrays and multiple-key arrays are unaffected
if (!is_array($array) or count($array) !== 1)
return $array;
// This is a recursive algorithm
$child = compressArray(current($array));
// Compression unnecessary when child is non-array or a multiple-key array
if (!is_array($child) or count($child) !== 1)
return $array;
// Both parent and child are single key arrays so compress
$new_key = key($array) . " > " . key($child);
return array($new_key => current($child));
}
这将转换
$arr = array
(
'root' => array(
'main' => array (
'members' => array(
array ('identifier' => '36', 'fullname' => 'jonathan carter'),
array ('identifier' => '42', 'fullname' => 'hello world')
)
)
)
);
进入
$arr = array
(
'root > main > members' => array(
array ('identifier' => '36', 'fullname' => 'jonathan carter'),
array ('identifier' => '42', 'fullname' => 'hello world')
)
);