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]