Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将任何多维数组显示为html表_Php_Html_Arrays - Fatal编程技术网

Php 将任何多维数组显示为html表

Php 将任何多维数组显示为html表,php,html,arrays,Php,Html,Arrays,我习惯于将任何类型的多维数组显示为人类可读的html表。例如,此数组: $arr = array ( 'root' => array( 'main' => array ( 'members' => array( array ('identifier' => '36', 'fullname' => 'jonathan carter'), array ('identifier' => '42', 'fulln

我习惯于将任何类型的多维数组显示为人类可读的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');
然后我用'>'连接这些值,它就成为我的新表头。但是我需要深入研究数组,因为我不想显示main>members和members。但我没有成功


如果有任何帮助,我将不胜感激。

我的建议是保持表格打印的原样,并创建一个新函数,该函数将获取数组,然后将其转换为某种数组,在打印时将显示您希望显示的内容

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')
            )
        )
    )
);
进入


在这一点上,我非常同意@Anthony!所以他还没有找到CSS$路径=;将$arr_path设置为$v{$path.='['.$v.]';},然后通过$deep=${'arr'.$path}@mclaassen访问更深的数组,这与形式无关,与内容有关。我没有在这个例子中使用CSS。@AsKaiser FR是的,我知道。我在为你辩护安东尼的话。
$arr = array
(
    'root > main > members' => array(
        array ('identifier' => '36', 'fullname' => 'jonathan carter'),
        array ('identifier' => '42', 'fullname' => 'hello world')
    )
);