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

Should i use unset inside a function?

取消设置 $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);
?>

没必要。当函数returns时,变量自行消失

即使您取消设置它,您仍然可以引用它包含在 $this->id$this->name 中的值,因此它们的内存不会被回收。您将回收的唯一内存是指向它们的微型数组对象。

PHP 在你做作业时不会复制。字符串和数字是不可变的,因此无需复制它们。对象通过引用复制。并且数组使用 copy-on-write 技术,所以它只会在旧引用仍然存在的情况下复制它们,然后您修改副本。