删除函数中的数组元素

时间:2018-03-28 18:45:13

标签: php function array-unset

我使用某些功能删除变量。我的代码就像:

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

但是在PHP手册中:

  

要在函数内部取消设置()一个全局变量,然后使用    $ GLOBALS 数组:

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

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

它存在,因为GLOBALS是超变的并且它具有其他var所具有的一切。

修改

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

EDIT2

我在我的脚本中输了错误。所以它正在......

完整的工作代码:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);