-3

我会创建自己的个性化未设置功能,但它不起作用。这是一个不起作用的代码示例。

<?php
function remove_var($mixedVar)
{
unset($mixedVar);
}
$sExample='Php';
remove_var($sExample);
echo $sExample;
?>
4

2 回答 2

1

第一个问题是您按值传递参数,因此您在内部对其执行的remove_var()操作不会影响函数外部的原始变量。要改为通过引用传递,请按如下方式更改函数声明:

function remove_var(&$mixedVar)

但是,使用这种方式仍然有一个怪癖unset()——它对我不起作用,即使变量是通过引用传递的。但是,如果您将变量设置为,它确实null有效,这几乎是等效的。当函数中的变量为 时unset(),它会删除该引用但保留原始引用并且不更改值。相反,当您将值更改null为时,引用将被单独保留,但值显然更改为null. 由于获取未设置变量的值null无论如何都会给您,因此这应该是等效的。所以试试:

function remove_var(&$mixedVar)
{
  $mixedVar = null;
}
于 2012-02-25T16:39:48.647 回答
1

您的函数不会取消设置$sExample,因为它存在于该函数之外。想知道你为什么不unset改用。

function remove_var($mixedVar)
{
   unset($mixedVar); // $mixedVar is unset not actual variable
}

$sExample='Php'; // this is outside variable
remove_var($sExample);
echo $sExample;

即使您通过引用传递变量,unset也不会删除该变量。例如:

function remove_var(&$mixedVar)
{
  unset($mixedVar);
}

$sExample='Php';
remove_var($sExample);
echo $sExample; // Php

所以你应该unset改用。

于 2012-02-25T16:23:00.900 回答