Удалить элемент массива в функции
Я использую некоторые функции для удаления VAR. Мой код похож на:
<?
$arr['var1'] = 'Hello';
$arr['var2'] = 'world';
function foo(){
global $arr;
unset($arr['var2']);
}
foo();
Но в руководстве по PHP:
Чтобы снять () глобальную переменную внутри функции, используйте массив $GLOBALS для этого:
unset($GLOBALS['arr']['var2']);
Ничего не сбрасывает, потому что $GLOBALS['arr']['var2']
не существует Я только хочу сбросить GLOBAL элемент массива внутри функции.
Он существует, потому что глобальные переменные супервариабельны и имеют все, что есть у других переменных.
редактировать:
Я пытался сделать это, но после того, как я пытаюсь позвонить 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 ответа
Вы можете передать переменную по ссылке:
$arr['var1'] = 'Hello';
$arr['var2'] = 'world';
function foo(&$a){
unset($a['var2']);
}
foo($arr);
https://secure.php.net/manual/en/language.references.pass.php
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);