我有一个函数做一个简单的查询并返回结果集:
function getAdmins($dbcon) {
$qry = "SELECT * ";
$qry .= "FROM admins ";
$result = mysqli_query($dbcon, $qry);
if (!$result) die("Admin query failed");
return $result;
}
我想了解当我这样做时究竟发生了什么:
$admin_result = getAdmins($dbcon);
// do stuff with $admin_result
mysqli_free_result($admin_result);
我是否将getAdmins()
的引用返回到我在那里创建的$result
变量并释放了它,或者我在$result
中创建了$admin_result
的副本和原始版本当函数返回时,$result
被释放?然后我还需要像我一样免费$admin_result
吗?我只是想知道这个过程在幕后发生了什么。我已经习惯了C,如果它是内存管理会出现一些问题。
答案 0 :(得分:1)
你可以使用spl_object_hash来检测$ admin_result和$ result是否是同一个对象。
getAdmins函数中的:
echo 'hash of $result is '. spl_object_hash($result) . '<br/>';
return $result;
然后
$admin_result = getAdmins($dbcon);
echo 'hash of $admin_result is '. spl_object_hash($admin_result) . '<br/>';
如果两个哈希值相同,则意味着它们是同一个对象