j.smith1981 Posted September 6, 2011 Share Posted September 6, 2011 Hi there, I don't know if this is the correct part of the forum but I am wanting to figure out something about recursion, kind of questioning someone elses code. It's just a general rule though so there's no real need to display it I don't think. However when I say I want to get a function to call another function, would I need to declare (write) the 2nd function within the function that called it? I just am questioning what I saw in another book whereby what I create does not work on my own basis but does when someone else shows an example in a book, where the author created a function that called a function that was written within another, is this legal syntax though is my main question? Kind of looked somewhat like this (very basic and no actual commands or instructions here): <?php function myfunction() { // if whatever condition is true, call the second function just below me: function mysecondfunction() { } } Does that make any sense to you? Or would I just go off the book I am reading now where the 2 of them are completely seperated and the first function calls the 2nd, but not actually putting a function within another? Any advice is much helpful, Jez. Quote Link to comment https://forums.phpfreaks.com/topic/246528-recursion-in-php/ Share on other sites More sharing options...
Adam Posted September 6, 2011 Share Posted September 6, 2011 You can't have a function within a function. You're most likely thinking of classes: class Foo { function bar() { // ... } } These are a very different concept, far beyond the scope of this post. If you would like to learn more though there's plenty of information in the manual, and an Object Orientated PHP Tutorial on the main site here. Recursion is something completely different, it's basically a function calling itself. For example a function that can take either an array or string as an argument, but if it's an array calls itself with each string item in the array. Very simple example: function recursion($arg) { if (is_array($arg)) { foreach ($arg as $str) { recursion($str); } } if (is_string($arg)) { echo $arg . "\n"; } } recursion(array('foo', 'bar')); recursion('baz'); Quote Link to comment https://forums.phpfreaks.com/topic/246528-recursion-in-php/#findComment-1265888 Share on other sites More sharing options...
j.smith1981 Posted September 6, 2011 Author Share Posted September 6, 2011 I wasn't talking about OOP at all with this post. Recursion is purely a function that is called that within that function, that data's meets a certain critera then another function is called based upon that criteria and then sends that result back to the function which was called in the first instance (I actually missed the latter part out) and then sends the data back to the logic of your application obviously. All I was asking can you put a function within a function or is this illegal syntax? That's all sorry for any confusion but that's all I was asking. Quote Link to comment https://forums.phpfreaks.com/topic/246528-recursion-in-php/#findComment-1265929 Share on other sites More sharing options...
Adam Posted September 6, 2011 Share Posted September 6, 2011 No problem, and it turns out you can. I didn't realise this before, which is why I suggested you're likely talking about classes due to the similar syntax. Once you've called the parent function you're also able to call the child function directly: function foo() { function bar() { echo 'baz'; } } foo(); bar(); // echoes "baz" In response to your original question though, you don't need to define a function within a function to call it. Functions can call any functions that have been defined. Recursion is purely a function that is called that within that function, that data's meets a certain critera then another function is called based upon that criteria and then sends that result back to the function which was called in the first instance (I actually missed the latter part out) and then sends the data back to the logic of your application obviously. Recursion is a function calling itself. Doesn't neccesarily need to return anything or call any additional functions, just call itself. Quote Link to comment https://forums.phpfreaks.com/topic/246528-recursion-in-php/#findComment-1265969 Share on other sites More sharing options...
j.smith1981 Posted September 6, 2011 Author Share Posted September 6, 2011 Much appreciate that reply as I said originally! Haha I do that sometimes myself no worries at all, I mean think someones talking in one context and means another lol. But no I every time I have tried doing that myself it never seems to work but going to give that another bash nesting functions, it makes sense if the child function as you so rightly put it isn't going to get called from outside the parent function, makes sense I suppose. It's just due to one not working before I though it was incorrect syntax in a book, but will do an exact example but by nesting them to the example I was working on before, the reason why I asked this question. Thanks ever so much again! Jeremy. Quote Link to comment https://forums.phpfreaks.com/topic/246528-recursion-in-php/#findComment-1265988 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.