나만의 맞춤 설정 해제 기능을 만들지 만 작동하지 않습니다. 다음은 작동하지 않는 코드 예제입니다.맞춤 설정을 해제 할 수 없습니다.
<?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
대신 사용하십시오.
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
을 사용해야합니다.
첫 번째 문제는 값으로 인수를 전달하기 때문에 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은 $ sExample 변수가 아니라 arg $ mixedVar와 관련이 있습니다. 한번보세요 : http://php.net/manual/en/function.unset.php –
로컬'$ mixedVar' 변수를 설정 해제하고 있습니다. 내가 할 수있는 한, 당신이하려고하는 일을 할 수있는 방법이 없다는 것입니다.'$ sExample' 글로벌을 만들기에 부족합니다. [PHP 설명서] (http://php.net/manual/en/function.unset.php)를 참조하십시오. – spencercw