<?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 написал(а):
Не удаляет, печалька
Спустя 37 минут (19.05.2011 - 22:57) Krevedko написал(а):
безобразие. Расмуса Лердорфа на кол
Спустя 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 написал(а):
Ну или на крайняк
если уж очень хочется global использовать.
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
Выкрутился
Выкрутился
Спустя 1 час, 15 минут, 57 секунд (20.05.2011 - 10:20) Krevedko написал(а):
еще немного сокращу
$foo = 'bar';
unset($foo);
$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 написал(а):
вообще к компу не подходить )