Невозможно создать персонализированный сброс - PullRequest
0 голосов
/ 25 февраля 2012

Я бы создал собственную персонализированную функцию сброса, но она не работает.Вот пример кода, который не работает.

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

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Первая проблема заключается в том, что вы передаете аргумент по значению, поэтому то, что вы делаете с ним в remove_var(), не влияет на исходную переменную вне функции. Вместо этого для передачи по ссылке измените объявление функции следующим образом:

function remove_var(&$mixedVar)

Тем не менее, есть и странность, использующая unset() таким образом - он не работает для меня, даже когда переменная передается по ссылке. Тем не менее, работает , если вместо переменной установить null, что в основном эквивалентно. Когда переменная в функции unset(), она удаляет эту ссылку, но оставляет исходную ссылку и не меняет значение. Когда вы изменяете значение на null, ссылки остаются одни, но значение, очевидно, изменяется на null. Поскольку получение значения неустановленной переменной в любом случае дает null, это должно быть фактически эквивалентно. Так что попробуйте:

function remove_var(&$mixedVar)
{
  $mixedVar = null;
}
1 голос
/ 25 февраля 2012

Ваша функция не будет сброшена $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 вместо.

...