2010-12-07 9 views
1

配列要素を表す変数変数の設定を解除するにはどうすればよいですか?変数変数の設定を解除する

function remove($var) { 
    unset($$var); 
} 

$x=array('a'=>1,'b'=>2); 
remove('$x["a"]'); 
var_dump(isset($x['a'])); 

上記のコードは、配列要素x['a']の設定を解除しません。 $_GET['ijk']と同じremove()関数が必要です。

+0

。 – Matthew

+0

'unset($ x [" a "])'を直接使わないのはなぜですか? – Gumbo

答えて

-2

unsetは配列要素でそれを使用する場合、配列はまだあなたがリファレンスとしてパラメータを処理するために、あなたの関数を書き換えることができ

存在します、その後remove

を入力する方が簡単です。

EDIT:ただunset()または(unset)キャストを使用アレックスのコード function remove(&$array, $key){ unset($array[$key]); } remove($x,'a');

+0

[この機能は私のために機能しませんでした](http://codepad.org/Vw4aSC4H)。 – alex

+0

マニュアルから: "PASS BY BY REFERENCEの変数が関数内でunset()されている場合、ローカル変数だけが破棄されます。呼び出し環境の変数はunset()が呼び出される前と同じ値を保持します。 – Matthew

+1

申し訳ありません、alexさんのコードを試してください – Camro

1

を使用するように更新。

機能を使用して設定を解除する場合は、このようなものが良いでしょう。

function removeMemberByKey(&$array, $key) { 
    unset($array[$key]); 
} 

It works!

0

変数変数は、スーパーグローバルで使用することはできませんので、あなたはそれは同様$_GETのために働く必要がある場合は、別の方法を使用して見てする必要があります。

出典:あなたはそれを直接、その後解除、$ _GET` `についての唯一の懸念がある場合http://php.net/manual/en/language.variables.variable.php

1

あなたが試すことができ、

function remove(&$var,$key) { 
    unset($var[$key]); 
} 

$x=array('a'=>1,'b'=>2); 
remove($x,'a'); 
var_dump(isset($x['a'])); 
0
Try This: 

<?php 
    /* Unset All Declair PHP variable*/ 
    $PHP_Define_Vars = array_keys(get_defined_vars()); 
    foreach($PHP_Define_Vars as $Blast) { 
     // or may be reset them to empty string# ${"$var"} = ""; 
     unset(${"$Blast"}); 
    } 
?>