我应该在函数内使用unset吗?

时间:2017-01-18 16:25:58

标签: php unset

是否有任何取消$data的目的?如果它包含大数据,我应该取消它吗?

<?php
require 'db.php';
class Test{
    public $id = 0;
    public $name;
    public function __construct()
    {
        $this->getUserInfo();
        echo $this->name;
    }
    private function getUserInfo()
    {
        global $db;
        $query = $db->prepare('SELECT id,name FROM users WHERE group = :g LIMIT 1');
        if ($query->execute(array('g' => 'admin')))
        {
            $data = $query->fetch(); // <--
            $this->id = $data[0];
            $this->name = $data[1];
            return true;
        }
    }
}
(new Test);
?>

1 个答案:

答案 0 :(得分:2)

没有必要。当函数返回时,变量自行消失。

即使你取消了它,你仍然可以引用它$this->name<table class="sep-table">中包含的值,因此它们的记忆力不会被回收。你回收的唯一记忆是指向它们的微小数组对象。

执行作业时,PHP不会制作副本。字符串和数字是不可变的,因此不需要复制它们。通过引用复制对象。并且数组使用写时复制技术,因此如果旧引用仍然存在,它只会在以后复制它们,然后您可以修改副本。