Php 如何创建将数组显示为树的函数?

Php 如何创建将数组显示为树的函数?,php,Php,如何创建将数组显示为树的函数。例如,我想获得一个决策树,我想一直走到基于分支值的叶子。我创建了树状的吼声: $tree= new DS_Tree(); $node=array('name' => 'start'); $tree->insert_node($node); $tree->goto_root(); $mytree = new id3(); $mytree->init($data_array_AttrList,$data_array_value

如何创建将数组显示为树的函数。例如,我想获得一个决策树,我想一直走到基于分支值的叶子。我创建了树状的吼声:

 $tree= new DS_Tree();
 $node=array('name' => 'start');

 $tree->insert_node($node);
 $tree->goto_root();

  $mytree = new id3();
  $mytree->init($data_array_AttrList,$data_array_values,$data_class,$data_array_instances,$tree); 
  $mytree->run();
  echo '<pre class="brush: php">';
        print_r($mytree->tree->draw_tree());
  echo '</pre>';
创建我的树的函数是:

private function make_tree($attr) {
    foreach($this->Values[$attr] as $v) {
        $subset = $this->get_subset($attr, $v);
        if($the_class = $this->has_same_class($subset)) {
            $node =array(
                'name' => $attr,
                 'arc' => $v

           );
            $this->tree->insert_node($node);

            $this->Instance = array_diff_key($this->Instance, $subset); 
        } else {
            $node =array(
                'name' => $this->Classa,
                'arc' => $v
            );

            $unresolved = $this->tree->insert_node($node);
       }
    }

    if (isset($unresolved)) {

        $this->tree->goto_index($unresolved);

    }

    }
}
结果是:

Array
(
[0] => Array
    (
        [name] => Time
        [parent] => 
        [children] => Array
            (
                [0] => 1
            )

    )

[1] => Array
    (
        [name] => Focus
        [arc] => Array
            (
                [0] => 2 day/week
                [1] => 3 day/week
                [2] => 4 day/week
                [3] => 5 day/week
                [4] => 6 day/week
            )

        [parent] => 0
        [children] => Array
            (
                [0] => 2
            )

    )

[2] => Array
    (
        [name] => Dificulty
        [arc] => Array
            (
                [0] => Weght loss
                [1] => Mantain weight
                [2] => Gain Mass
            )

        [parent] => 1
        [children] => Array
            (
                [0] => 3
            )

    )

[3] => Array
    (
        [name] => Sex
        [arc] => Array
            (
                [0] => Beginner
                [1] => Intermediar
                [2] => Advance
            )

        [parent] => 2
        [children] => Array
            (
                [0] => 4
            )

    )

[4] => Array
    (
        [name] => Array
            (
                [Exercise] => Array
                    (
                        [0] => Array
                            (
                                [0] => Ex1  
                                [1] => Ex2
                                [2] => Ex3
                                [3] => Ex4
                                [4] => Ex5

                            )

                    )

            )

        [arc] => Array
            (
                [0] => F
                [1] => M
            )

        [parent] => 3
    )

)

仅将阵列显示为树:

echo "<pre>";
var_dump($array);
echo "</pre>";
echo”“;
变量转储($数组);
回声“;

以下是一种迭代此数据结构并查找特定值的方法:

echo recurseFind($tree, "Mantain weight", '$tree');
对于您提供的示例输入,如果您这样称呼它:

$tree[2]['arc'][1]
以可在PHP中计算的格式输出该值的“位置”(仅第一次匹配):


我怎么能走这棵树?因为我想将其与用户的输入数据进行比较,您可以更新您的问题并给出此类输入的示例,以及您希望从中获得的输出吗?如果用户引入这样的输入,例如:时间=2天/周,焦点=保持权重和难度=前进…那么输出为=Ex2(例如)Hmmm,根据示例数据,我并不真正理解这一点:我认为您的示例数据发生了变化,因为“焦点”部分实际上有“2天/周”值……等等。另外,我不知道如何确定输出为“Ex2”(为什么不是“Ex3”?)。无论如何,我更新了我的答案,使其仅适用于值部分。它返回该值的路径。我想你现在可以适应你的需要了。谢谢你,我理解你所做的。我的数据库包含一些信息,例如:F、2天/周/、保持体重、预付款、Ex2。F、 5/天/周/保持体重、中间值、Ex3 B、3天/周、增重、中间值、Ex1…等。在此基础上,我创建了我的树,并希望使用它向用户进行重新编译(Ex)。
echo recurseFind($tree, "Mantain weight", '$tree');
$tree[2]['arc'][1]