在我的案例中正确使用PHP引用

时间:2015-02-03 12:19:42

标签: php algorithm web graph-algorithm

我想实现Aho-Corasick的算法。我已经制作了trie并且它有效,我已经完成了删除,插入和搜索。但是,当我试图插入我的测试数据(~56k字)时,PHP发出错误:

  

php在一个脚本(128 mb)上达到内存限制。

所以,我认为问题在于我的错误使用引用。这是我的代码的一部分,我得到一个错误:

public function insert($key, $value) {
        $current_node = &$this->root; // setting current node as root node

        for ($i = 0; $i < mb_strlen($key, 'UTF-8'); $i++) {
            $char = mb_substr($key, $i, 1, 'UTF-8');

            $parent = &$current_node; // setting parent node

            if (isset($current_node['children'][(string)$char])) {
                $current_node = &$current_node['children'][(string)$char];
                if (isset($current_node['isLeaf']))
                    unset($current_node['isLeaf']);
            } else {
                $current_node['children'][(string)$char] = [];
                $current_node = &$current_node['children'][(string)$char];
            }

            $current_node['parent'] = &$parent;

            if ($i == (mb_strlen($key, 'UTF-8') - 1)) {
                $current_node['value'] = $value;
                if (!isset($current_node['children'])) {
                    $current_node['isLeaf'] = true;
                }
            }
        }
    }

我认为问题在于我尝试通过引用存储所有大量内容,而不仅仅是C / C ++风格的地址。那么,我可以用C / C ++风格解决这个问题吗?有php工具吗?如果我在C中编写php-extension然后将其添加到我的php-interpreator中会怎么样?

0 个答案:

没有答案