[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: unset
GQU
<?php
function
destroy_foo() {
global $foo;
unset($foo);
}

$foo = 'bar';
destroy_foo();
echo $foo;
?>

Почему в ответе bar, $foo должно же было удалится?



Спустя 16 минут, 40 секунд (19.05.2011 - 19:40) nugle написал(а):
GQU
переменная бы удалилась, если бы ты сделал так

<?php
function
destroy_foo($foo) {
global $foo;
unset($foo);
}

$foo = 'bar';
destroy_foo($foo);
echo $foo;
?>

Спустя 40 минут, 14 секунд (19.05.2011 - 20:21) GQU написал(а):
переменная бы удалилась, если бы ты сделал так

В вашем случае тоже ничего не удалилось

Спустя 9 минут, 30 секунд (19.05.2011 - 20:30) nugle написал(а):
удалилось, но переменная удалилась внутри твоей функции!
т.е.

function destroy_foo($foo) {
global $foo;
unset($foo);

echo $foo; // должна быть удалееная
}


если ты хочешь, чтобы вернулась удаленная, то пробуй так

<?php
function
destroy_foo($foo) {
global $foo;
unset($foo);
return $foo;
}

$foo = 'bar';
$foo = destroy_foo($foo);
echo $foo;
?>

Спустя 5 минут, 31 секунда (19.05.2011 - 20:36) neadekvat написал(а):
Цитата (nugle @ 19.05.2011 - 21:30)
если ты хочешь, чтобы вернулась удаленная, то пробуй так

И что это значит? unset() означает удаление переменной из оперативной памяти. Твоя функция возвращает неопределенную переменную.

GQU, боюсь ошибиться, но global работает с переменной по ссылке. Т.е. удалить так переменную нельзя.

Спустя 21 минута, 40 секунд (19.05.2011 - 20:57) inpost написал(а):
neadekvat
А если связать:
function (&$foo)
{
unset($foo);
}

Спустя 12 минут, 48 секунд (19.05.2011 - 21:10) neadekvat написал(а):
inpost, то что?)

Спустя 16 минут, 5 секунд (19.05.2011 - 21:26) inpost написал(а):
neadekvat
удалять будет?

Спустя 3 минуты, 35 секунд (19.05.2011 - 21:30) neadekvat написал(а):
Цитата (inpost @ 19.05.2011 - 22:26)
удалять будет?

А попробовать?) Странно от тебя такое видеть.

Спустя 4 минуты, 39 секунд (19.05.2011 - 21:34) Krevedko написал(а):
да ну. еще пробовать.
но скажу по секрету-удалит )

Спустя 2 минуты, 27 секунд (19.05.2011 - 21:37) neadekvat написал(а):
Цитата (Krevedko @ 19.05.2011 - 22:34)
но скажу по секрету-удалит

Да? И что же этот код выведет?
function destroy_foo(&$foo) {
global $foo;
$foo = 'asd';
unset($foo);
}

$foo = 'bar';
destroy_foo($foo);
echo $foo;

Спустя 42 минуты, 49 секунд (19.05.2011 - 22:20) inpost написал(а):
Не удаляет, печалька sad.gif

Спустя 37 минут (19.05.2011 - 22:57) Krevedko написал(а):
безобразие. Расмуса Лердорфа на кол mad.gif

Спустя 5 минут, 57 секунд (19.05.2011 - 23:03) neadekvat написал(а):
Цитата (Krevedko @ 19.05.2011 - 23:57)
безобразие

Да ну? Не хватает еще, чтобы в функциях можно было удалять переменные, используемые в основном коде.

Спустя 1 минута, 20 секунд (19.05.2011 - 23:04) Krevedko написал(а):
со ссылками почему нет. менять же их можно

Спустя 1 час, 18 минут, 9 секунд (20.05.2011 - 00:22) Gradus написал(а):
Krevedko, ну и разрушит только ссылку , а не переменную.Вот так сработает, все остальные свособы локализованы.
<?php
function
destroy_foo() {
unset($GLOBALS['foo']);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>

Спустя 6 часов, 6 секунд (20.05.2011 - 06:22) neadekvat написал(а):
Gradus, ой, не дай бог теперь, чтобы нашел этот скрипт какой-нибудь "экономист".
Я прямо представил картину. Смотришь на код - передается массив в функцию. А через сто строк тебе данные из этого массива понадобились. "О, - думаешь, - спасибо предыдущему программисту - массив уже есть". И обламываешься. И еще пару-тройку часов ищешь, куда девается переменная?

Спустя 2 часа, 1 минута, 43 секунды (20.05.2011 - 08:24) linker написал(а):
Блин, нахрена такие извращенства, неужели нельзя просто
function func($foo)
{
return null;
}

$foo = 'bar';
$foo = func($foo);
нафига себе и другим лишний гемморой в попу?

Спустя 5 минут, 43 секунды (20.05.2011 - 08:30) kirik написал(а):
Ну или на крайняк
function func() {
global $foo;
$foo = null;
}

$foo = 'bar';
func();
echo $foo;

если уж очень хочется global использовать.

Спустя 30 минут, 52 секунды (20.05.2011 - 09:00) linker написал(а):
Или (вместе global и unset())
function func()
{
global $foo;
}

$foo = 'bar';
func();
unset($foo);

Спустя 3 минуты, 23 секунды (20.05.2011 - 09:04) kirik написал(а):
linker
Выкрутился smile.gif

Спустя 1 час, 15 минут, 57 секунд (20.05.2011 - 10:20) Krevedko написал(а):
еще немного сокращу
$foo = 'bar';
unset($foo);



Спустя 1 час, 57 минут, 54 секунды (20.05.2011 - 12:18) linker написал(а):
А если еще короче, то
<?php ?>
а ещё короче - вообще ничего не делать. :)

Спустя 51 минута, 49 секунд (20.05.2011 - 13:10) Krevedko написал(а):
ну да. вообще переменную не объявлять )

Спустя 3 минуты, 48 секунд (20.05.2011 - 13:13) Gradus написал(а):
вообще к компу не подходить )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.