-3

独自のパーソナライズされた unset 関数を作成しますが、機能しません。動作しないコードの例を次に示します。

<?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 に答える