Оно и к лучшему.почему в таком случае не работает global?
Ну в моем случае так нужно, функция основная делает кучу разной работы, и внутри функции есть большие куски кода которые повторяются, и чтобы не дублировать их по многу раз я решил сделать вложенные функции и обращаться к ним, вместо того чтобы много раз писать один и тот же код с небольшими изменениями.никто не сталкивался.
никому и в голову не придет такой идиотизм как определять функцию внутри функции и приправить это все глобалами.
Мне кажется это страннымВ РНР нет понятия "вложенных" функций. Писать так формально можно, но функция не приобретает никаких особых свойств связи с "внешней" функцией.
Какие-то подозрительные выводы ты делаешь из моих слов. Я лишь сказал, что кодМне кажется это страннымПочему бы нет! Тоесть никак нельзя? Придется писать много раз один и тотже код?
function a()
{
function b()
{
}
}
function a()
{
}
function b()
{
}
function myFunction($param1, $param2) {
....
return $result;
}
Обрати внимание на выделенный текст.
function a(){
$src = '1.jpg';
$src = imagecreatefromjpeg($src);
if(Тут какое-то условие){
function b(){
global $src;
Тут мы создаем новый ресурс
imagecopy($new, $src, Тут параметры не важно какие, это для примера);
Удаляем из памяти старый ресурс
imagedestroy($src);
Возвращаем новый ресурс
return $new;
}
if(Тут какое-то условие){
Теперь тут уже совсем новый ресурс
$src = b();
}
}
Если там выше условие не сработало, то используем первоначальный ресурс, если сработало, то ресурс уже новый
imagecopyresampled($new, $src, Тут параметры не важно какие, это для примера);
}
a();
Хочешь работать с переменной -- передай ее в фунцию, а потом верни обратно. Это даже ежу понятно, а ты все не догоняешь.это обычная функция, ты передаешь в нее два параметра, это все и ежу понятно, а мне нужно работать с переменной $a тоесть обновлять ее.
Да не проблема ее передать, проблема в том, что мне нужно удалить старый ресурс из памяти imagedestroy($src); прежде чем возвращать новый, в переменную $src; ведь если я обновлю $src; я потеряю ссылку на старый ресурс, и не смогу его удалить. Тут конечно можно делать другие имена переменных, да не проблема, но это еще нужно городить дополнительный код, а мне хотелось чтобы все было чистенько без лишнего мусора.Хочешь работать с переменной -- передай ее в фунцию, а потом верни обратно. Это даже ежу понятно, а ты все не догоняешь.
Ну извините, я просто думал что есть простое решение, и нет смысла объяснять все тонкости кода, который давольно большой. Да можно все это сделать без функций и все будет просто и легко, но хотелось сократить на 20 строк кодкод не читал, но хочу сказать, что вопрос изначально надо было задавать в таком виде,
а не про слепых колченогих сферических коней в вакуумн
А сохранить его во временной переменоой не судьба?. Обязатльно нужна глобальная?мне нужно удалить старый ресурс из памяти imagedestroy($src); прежде чем возвращать новый, в переменную $src; ведь если я обновлю $src; я потеряю ссылку на старый ресурс, и не смогу его удалить.
Было бы супер уродливо.а если бы сработал global то все было бы просто супер, красиво)
Да судьба чегож не судьба, я об этом и говорю вышеА сохранить его во временной переменоой не судьба?. Обязатльно нужна глобальная?
Но тогда придется еще городить кучу условий, ведь там может быть десяток вариантов. Ладно, меня не поняли, очень жаль.Можно там конечно создавать новые переменные и поставить условие,
Не чего уродливого там бы небыло, было бы намного меньше кода. А то что, я запутался с тем что $a всеже изначально не глобальная, ну так это просто невнимательность, со всеми бывает, я думал может есть другое решение.Было бы супер уродливо.
Я очень сильно сомневаюсь, что вы знаете все возможности PHP, все функции наизусть все, все, все. Ну если вы только всю жизнь не программируете на PHP с утра до ночи, или если вы не гений, что бы держать в голове всю эту информацию. В таком случае, все кто тут на форуме задает вопросы, не знают таблицу умножения(ваши слова).Перед тем, как начинать искать простые решения для велосипедов на квадратных колесах, сначала надо выучить таблицу умножения.