-2

我正在使用一些函数来删除变量。我的代码是这样的:

<?
$arr['var1'] = 'Hello';
$arr['var2'] = 'world';
function foo(){
    global $arr;
    unset($arr['var2']);
} 
foo();

但在 PHP 手册中:

要 unset() 函数内部的全局变量,然后使用 $GLOBALS数组来执行此操作:

unset($GLOBALS['arr']['var2']);

不会取消任何设置,因为$GLOBALS['arr']['var2']不存在。我只想取消设置函数内部的 GLOBAL 数组元素。

它存在,因为 GLOBALS 是超变量,它拥有其他 var 所拥有的一切。

编辑:

我试图这样做,但在我尝试调用foo()之后,我尝试print_r($arr) 显示 var1 和 var2,如果我尝试print_r($GLOBALS['arr']['var2'])显示未定义的索引......也许它是配置......

编辑2

我在脚本中打错了。所以它正在工作......

完整的工作代码:

<?
$arr['var1'] = 'Hello';
$arr['var2'] = 'world';
function foo(){
    global $arr;
    unset($GLOBALS['arr']['var2']);
} 
foo();
4

2 回答 2

1

您可以通过引用传递变量:

$arr['var1'] = 'Hello';
$arr['var2'] = 'world';
function foo(&$a){
    unset($a['var2']);
}
foo($arr);

https://secure.php.net/manual/en/language.references.pass.php

于 2018-03-28T18:50:13.010 回答
0

unset($GLOBALS['arr']['var2']);是正确的。

见这里https://3v4l.org/rCN5h

<?php
$arr['var1'] = 'Hello';
$arr['var2'] = 'world';
function foo(){
unset($GLOBALS['arr']['var2']);
}
var_dump($arr);
foo();
var_dump($arr);
于 2018-03-28T18:48:47.177 回答