0

嗨,我有以下数组:

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);
4

0 回答 0