嗨,我有以下数组:
Huge_Array (356362 elements) //used splfixedarray for better handling of this array
(
[1] => 0
[2] => 1
[3] => 2
[4] => 3
[5] => 1
[6] => 0
)
此数组的键是唯一的,并且值显示键的父级。就像 1 和 6 的父级是 0,2 的父级是 1,因为 3 是 2....
该数组获取节点的 id 和父 id,表中的这些节点是自引用的,即 id: 234 parentid: 345 , id:345 parentid:676。我试图从这些节点中创建一棵树,创建数组并正确保存子、父的关系。但是,它仅适用于特定限制的节点,例如几千个。假设完整的树是由我已经拥有的具有 350k 个节点的数组组成的。我序列化它并获取文件内容(文件大小 7mb),现在使用该数组(成功取消序列化)我执行以下操作来创建树。然而,这不适用于一个巨大的数组。它超时是因为它太大但它适用于较小的数组。我做错了什么,我怎样才能让它支持巨大的数组并在内存中构造树?
class node {
var $children;
public function __construct(){
$this->children = array();
}
}
$tree = array();
foreach ($Huge_array as $q => $p){
if(!isset($tree[$p]))
$tree[$p] = new node;
if(!isset($tree[$q]))
$tree[$q] = new node;
$mark[$p]=FALSE;
$mark[$q]=FALSE;
array_push($tree[$p]->children,$q);
}
var_dump($tree);