首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PHP清除某些php变量(不是所有php变量)?

问如何使用PHP清除某些php变量(不是所有php变量)?
EN

Stack Overflow用户
提问于 2014-10-28 16:42:43
回答 4查看 90关注 0票数 0

如何使用php清除某些php变量(不是所有PHP变量)?

我有许多php变量

代码语言:javascript
复制
EG: $a,$b,$c,$d.$e,$f,$g,$h,$i,$j

我想清除所有php变量,而不是清除$a,$c,$d。

我使用这段代码但不起作用,我该怎么做?

代码语言:javascript
复制
<?PHP
$a = "1";
$b = "2";
$c = "3";
$d = "4";
$e = "5";
$f = "6";
$g = "7";
$h = "8";
$i = "9";
$j = "10";
   $dontDelete = array('a' , 'c' , 'd');
   foreach ($ as $key=>$val)
       {
          if (!in_array($key,$dontDelete)) 
             {
               unset($[$key]);
             }
       }
?>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-10-28 16:49:25

代码语言:javascript
复制
$defined_variables = get_defined_vars();
$variables2keep = array("a", "b", "c", "variables2keep");

foreach ($defined_variables as $variable => $value) {
    if (! in_array($variable, $variables2keep)) {
        unset($$variable);
    }
}

Demo

票数 2
EN

Stack Overflow用户

发布于 2014-10-28 16:49:28

我认为它不能工作的主要原因是您不能以这种方式引用变量名。如果这些名称仅仅是单个关联数组中的索引,它可能会工作。否则,我建议您简单地列出所有变量,并手动取消它们。

票数 0
EN

Stack Overflow用户

发布于 2014-10-28 17:18:12

我知道你已经接受了一个答案,但这是一个very risky approach。这里有一个替代方案,它不会破坏所有的超全局变量和其他要删除的非预期变量。

  • 从文件中抓取所有以一个字母命名的变量
  • 绕过它们
  • 看看他们是否在白名单里
  • 如果不在白名单里,就杀了他们。

​

代码语言:javascript
复制
$arrWhitelist = array("a", "b", "c");
$file = file_get_contents(__FILE__);
preg_match_all('/\$[A-Za-z_]{1}/', $file, $vars);

foreach($vars[0] as $variables) {
    $variables = ltrim($variables, "$");
    if(in_array($variables, $arrWhitelist) == FALSE ) {
        unset($$variables);
    }
}

例如;

代码语言:javascript
复制
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$a = "1";
$b = "2";
$c = "3";
$d = "4";
$e = "5";
$f = "6";
$g = "7";
$h = "8";
$i = "9";
$j = "10";

$arrWhitelist = array("a", "b", "c");
$file = file_get_contents(__FILE__);
preg_match_all('/\$[A-Za-z_]{1}/', $file, $vars);

foreach($vars[0] as $variables) {
    $variables = ltrim($variables, "$");
    if(in_array($variables, $arrWhitelist) == FALSE ) {
        unset($$variables);
    }
}

echo $a; //Output: 1
echo $g; //Ouput: Notice: Undefined variable: g in C:\xampp\htdocs\test.php on line 29
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26613811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档