私自身のパーソナライズされた未設定機能を作成しますが、機能しません。 ここでは動作しないコードの例を示します。パーソナライズされた未設定を作成できません
<?php
function remove_var($mixedVar)
{
unset($mixedVar);
}
$sExample='Php';
remove_var($sExample);
echo $sExample;
?>
私自身のパーソナライズされた未設定機能を作成しますが、機能しません。 ここでは動作しないコードの例を示します。パーソナライズされた未設定を作成できません
<?php
function remove_var($mixedVar)
{
unset($mixedVar);
}
$sExample='Php';
remove_var($sExample);
echo $sExample;
?>
それはその関数の外に存在するため$sExample
あなたの機能は解除しません。なぜかunset
を使用しないでください。
変数を参照渡ししても、unset
はその変数を削除しません。例:
function remove_var(&$mixedVar)
{
unset($mixedVar);
}
$sExample='Php';
remove_var($sExample);
echo $sExample; // Php
代わりにunset
を使用してください。
最初の問題は、引数を値渡しにすることです。つまり、remove_var()
の中で何をするかは、関数外の元の変数には影響しません。次のように代わりに参照渡しするには、関数の宣言を変更:
function remove_var(&$mixedVar)
しかし、まだunset()
この方法を使用して癖があります - 変数が参照渡しされた場合でも、私のために動作しません。ただし、代わりにnull
に変数を設定すると、はになります。これはほぼ同等です。関数内の変数がunset()
の場合、その参照は削除されますが、元の参照は残り、値は変更されません。代わりにnull
に値を変更すると、参照は単独で残されますが、値は明らかにnull
に変更されます。とにかく設定されていない変数の値を取得すると、null
が得られます。これは事実上同等です。したがって、試してみてください:
function remove_var(&$mixedVar)
{
$mixedVar = null;
}
それは本当ですが、 'null'は' unset'の目的に反するメモリ内の参照をまだ保持しています。ここでのポイントは、OPに彼が 'unset'を使うべきことを説明しなければならないということです。不要なコードやむしろそのような悪い練習を避けてください:) – Sarfraz
私は彼がその機能で何か他のことをしたいと思っていました。まあ、彼はそれを示していない - そうでなければ、パーソナライズされたバージョンではポイントがありません。しかし、それ以外の、言及されていないもののための関数を持ち、とにかく 'unset()' *を呼び出すのが最良だと思います。 – Dmitri
私はその場合あなたに同意しますが、何か間違った答えがOPによって受け入れられたと推測します、面白い:) – Sarfraz
私が間違っていない場合、unsetはarg $ mixedVarに関連し、$ sExample変数には関係ありません。見てみましょう:http://php.net/manual/en/function.unset.php –
ローカルの '$ mixedVar'変数の設定を解除します。あなたがしようとしていることをする方法がないと言うことができる限り、 '$ sExample'をグローバルにすることはできません。 [PHP documentation](http://php.net/manual/en/function.unset.php)を参照してください。 – spencercw