Setting a variable inside a function and making it global insidean inner function doesn't work?

This is a discussion on Setting a variable inside a function and making it global insidean inner function doesn't work? within the PHP General forums, part of the PHP Programming Forums category; Setting a variable inside a function and making it global inside an inner function doesn't work? Right well I ...


Go Back   Usenet Forums > PHP Programming Forums > PHP General

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 03-12-2008
Lamonte
 
Posts: n/a
Default Setting a variable inside a function and making it global insidean inner function doesn't work?

Setting a variable inside a function and making it global inside an
inner function doesn't work?

Right well I have created this function:

Code:
function getForumChildrenTree( $id )
{
$id = intval( $id );
$treeResult = array(
'topics' => array(),
'posts' => array(),
'forums' => array(),
);
applyForumChildrenTree( $id );
}
What this function does: Basically this function is set to an id of a
forum id, then theres a variable that stores an array. Then theres a
recursive function called "applyForumChildrenTree" to update the
"treeResult" variable, but it's not exactly working. For some reason
when I did print_r inside the "applyForumChildrenTree" the array is as
applied:

Quote:
Array
(
[forums] => Array
(
[0] => 3
[1] => 8
[2] => 5
)

[topics] => Array
(
[0] => 5
)

[posts] => Array
(
[0] => 5
)

)
Then inside the actual function "getForumChildrenTree" I tried
outputting the "treeResult" array using "print_r" after the recursive
function "applyForumChildrenTree" as follows:

Code:
function getForumChildrenTree( $id )
{
$id = intval( $id );
$treeResult = array(
'topics' => array(),
'posts' => array(),
'forums' => array(),
);
applyForumChildrenTree( $id );
print_r($treeResult);
}
and it showed me a blank array, (default array I created) as follows:

Quote:
Array
(
[topics] => Array
(
)

[posts] => Array
(
)

[forums] => Array
(
)

)
Is this a bug? I'm using PHP 5.2.4
Reply With Quote
  #2 (permalink)  
Old 03-12-2008
Shawn McKenzie
 
Posts: n/a
Default Re: Setting a variable inside a function and making it global insideaninner function doesn't work?

Lamonte wrote:
> Setting a variable inside a function and making it global inside an
> inner function doesn't work?
>
> Right well I have created this function:
>
>
Code:
> function getForumChildrenTree( $id )
> {
>    $id = intval( $id );
>    $treeResult = array(
>        'topics' => array(),
>        'posts' => array(),
>        'forums' => array(),
>    );
>    applyForumChildrenTree( $id );
> }
>
>
> What this function does: Basically this function is set to an id of a
> forum id, then theres a variable that stores an array. Then theres a
> recursive function called "applyForumChildrenTree" to update the
> "treeResult" variable, but it's not exactly working. For some reason
> when I did print_r inside the "applyForumChildrenTree" the array is as
> applied:
>
>
Quote:
> Array
> (
> [forums] => Array
> (
> [0] => 3
> [1] => 8
> [2] => 5
> )
>
> [topics] => Array
> (
> [0] => 5
> )
>
> [posts] => Array
> (
> [0] => 5
> )
>
> )
>
>
> Then inside the actual function "getForumChildrenTree" I tried
> outputting the "treeResult" array using "print_r" after the recursive
> function "applyForumChildrenTree" as follows:
>
>
Code:
> function getForumChildrenTree( $id )
> {
>    $id = intval( $id );
>    $treeResult = array(
>        'topics' => array(),
>        'posts' => array(),
>        'forums' => array(),
>    );
>    applyForumChildrenTree( $id );
>    print_r($treeResult);
> }
>
>
> and it showed me a blank array, (default array I created) as follows:
>
>
Quote:
> Array
> (
> [topics] => Array
> (
> )
>
> [posts] => Array
> (
> )
>
> [forums] => Array
> (
> )
>
> )
>
>
> Is this a bug? I'm using PHP 5.2.4


Well you haven't defined anything global in your code, unless you did
inapplyForumChildrenTree(), in which case it needs to be global
everywhere that you want to use it as global.

Easiest way would just be to use it like this everywhere:

$GLOBALS['treeResult'] = array(
'topics' => array(),
'posts' => array(),
'forums' => array(),
);

-Shawn
Reply With Quote
  #3 (permalink)  
Old 03-12-2008
Shawn McKenzie
 
Posts: n/a
Default Re: Setting a variable inside a function and making it global insideaninnerfunction doesn't work?

Shawn McKenzie wrote:
> Lamonte wrote:
>> Setting a variable inside a function and making it global inside an
>> inner function doesn't work?
>>
>> Right well I have created this function:
>>
>>
Code:
>> function getForumChildrenTree( $id )
>> {
>>    $id = intval( $id );
>>    $treeResult = array(
>>        'topics' => array(),
>>        'posts' => array(),
>>        'forums' => array(),
>>    );
>>    applyForumChildrenTree( $id );
>> }
>>
>>
>> What this function does: Basically this function is set to an id of a
>> forum id, then theres a variable that stores an array. Then theres a
>> recursive function called "applyForumChildrenTree" to update the
>> "treeResult" variable, but it's not exactly working. For some reason
>> when I did print_r inside the "applyForumChildrenTree" the array is as
>> applied:
>>
>>
Quote:
>> Array
>> (
>> [forums] => Array
>> (
>> [0] => 3
>> [1] => 8
>> [2] => 5
>> )
>>
>> [topics] => Array
>> (
>> [0] => 5
>> )
>>
>> [posts] => Array
>> (
>> [0] => 5
>> )
>>
>> )
>>
>>
>> Then inside the actual function "getForumChildrenTree" I tried
>> outputting the "treeResult" array using "print_r" after the recursive
>> function "applyForumChildrenTree" as follows:
>>
>>
Code:
>> function getForumChildrenTree( $id )
>> {
>>    $id = intval( $id );
>>    $treeResult = array(
>>        'topics' => array(),
>>        'posts' => array(),
>>        'forums' => array(),
>>    );
>>    applyForumChildrenTree( $id );
>>    print_r($treeResult);
>> }
>>
>>
>> and it showed me a blank array, (default array I created) as follows:
>>
>>
Quote:
>> Array
>> (
>> [topics] => Array
>> (
>> )
>>
>> [posts] => Array
>> (
>> )
>>
>> [forums] => Array
>> (
>> )
>>
>> )
>>
>>
>> Is this a bug? I'm using PHP 5.2.4

>
> Well you haven't defined anything global in your code, unless you did
> inapplyForumChildrenTree(), in which case it needs to be global
> everywhere that you want to use it as global.
>
> Easiest way would just be to use it like this everywhere:
>
> $GLOBALS['treeResult'] = array(
> 'topics' => array(),
> 'posts' => array(),
> 'forums' => array(),
> );
>
> -Shawn


After a second look, probably a better alternate would be to have
applyForumChildrenTree() return the array, then use $treeResult =
applyForumChildrenTree( $id );

-Shawn
Reply With Quote
  #4 (permalink)  
Old 03-12-2008
Shawn McKenzie
 
Posts: n/a
Default Re: [PHP] Re: Setting a variable inside a function and making itglobal insideaninner function doesn't work?

Lamonte wrote:
> Shawn McKenzie wrote:
>> Shawn McKenzie wrote:
>>
>>> Lamonte wrote:
>>>
>>>> Setting a variable inside a function and making it global inside an
>>>> inner function doesn't work?
>>>>
>>>> Right well I have created this function:
>>>>
>>>>
Code:
>>>> function getForumChildrenTree( $id )
>>>> {
>>>>    $id = intval( $id );
>>>>    $treeResult = array(
>>>>        'topics' => array(),
>>>>        'posts' => array(),
>>>>        'forums' => array(),
>>>>    );
>>>>    applyForumChildrenTree( $id );
>>>> }
>>>>
>>>>
>>>> What this function does: Basically this function is set to an id of a
>>>> forum id, then theres a variable that stores an array. Then theres a
>>>> recursive function called "applyForumChildrenTree" to update the
>>>> "treeResult" variable, but it's not exactly working. For some reason
>>>> when I did print_r inside the "applyForumChildrenTree" the array is as
>>>> applied:
>>>>
>>>>
Quote:
>>>> Array
>>>> (
>>>> [forums] => Array
>>>> (
>>>> [0] => 3
>>>> [1] => 8
>>>> [2] => 5
>>>> )
>>>>
>>>> [topics] => Array
>>>> (
>>>> [0] => 5
>>>> )
>>>>
>>>> [posts] => Array
>>>> (
>>>> [0] => 5
>>>> )
>>>>
>>>> )
>>>>
>>>>
>>>> Then inside the actual function "getForumChildrenTree" I tried
>>>> outputting the "treeResult" array using "print_r" after the recursive
>>>> function "applyForumChildrenTree" as follows:
>>>>
>>>>
Code:
>>>> function getForumChildrenTree( $id )
>>>> {
>>>>    $id = intval( $id );
>>>>    $treeResult = array(
>>>>        'topics' => array(),
>>>>        'posts' => array(),
>>>>        'forums' => array(),
>>>>    );
>>>>    applyForumChildrenTree( $id );
>>>>    print_r($treeResult);
>>>> }
>>>>
>>>>
>>>> and it showed me a blank array, (default array I created) as follows:
>>>>
>>>>
Quote:
>>>> Array
>>>> (
>>>> [topics] => Array
>>>> (
>>>> )
>>>>
>>>> [posts] => Array
>>>> (
>>>> )
>>>>
>>>> [forums] => Array
>>>> (
>>>> )
>>>>
>>>> )
>>>>
>>>>
>>>> Is this a bug? I'm using PHP 5.2.4
>>>>
>>> Well you haven't defined anything global in your code, unless you did
>>> inapplyForumChildrenTree(), in which case it needs to be global
>>> everywhere that you want to use it as global.
>>>
>>> Easiest way would just be to use it like this everywhere:
>>>
>>> $GLOBALS['treeResult'] = array(
>>> 'topics' => array(),
>>> 'posts' => array(),
>>> 'forums' => array(),
>>> );
>>>
>>> -Shawn
>>>

>>
>> After a second look, probably a better alternate would be to have
>> applyForumChildrenTree() return the array, then use $treeResult =
>> applyForumChildrenTree( $id );
>>
>> -Shawn
>>
>>

> As I said in my first reply, its a "Recursive function".so I couldn't
> return the array.
>


Please reply to the list.

Sure, your function can return an array if it's recursive. It returns
it to itself and uses whatever logic you need to add to the current
array or merge or remove or whatever. Regardless, I explained why you
aren't seeing the vars as global and a better way to do it using the
$GLOBALS array. I may be off but we would need to see the
applyForumChildrenTree() to know.

-Shawn
Reply With Quote
  #5 (permalink)  
Old 03-12-2008
Lamonte
 
Posts: n/a
Default Re: [PHP] Re: Setting a variable inside a function and making itglobal insideaninner function doesn't work?

Shawn McKenzie wrote:
> Lamonte wrote:
>
>> Shawn McKenzie wrote:
>>
>>> Shawn McKenzie wrote:
>>>
>>>
>>>> Lamonte wrote:
>>>>
>>>>
>>>>> Setting a variable inside a function and making it global inside an
>>>>> inner function doesn't work?
>>>>>
>>>>> Right well I have created this function:
>>>>>
>>>>>
Code:
>>>>> function getForumChildrenTree( $id )
>>>>> {
>>>>>    $id = intval( $id );
>>>>>    $treeResult = array(
>>>>>        'topics' => array(),
>>>>>        'posts' => array(),
>>>>>        'forums' => array(),
>>>>>    );
>>>>>    applyForumChildrenTree( $id );
>>>>> }
>>>>>
>>>>>
>>>>> What this function does: Basically this function is set to an id of a
>>>>> forum id, then theres a variable that stores an array. Then theres a
>>>>> recursive function called "applyForumChildrenTree" to update the
>>>>> "treeResult" variable, but it's not exactly working. For some reason
>>>>> when I did print_r inside the "applyForumChildrenTree" the array is as
>>>>> applied:
>>>>>
>>>>>
Quote:
>>>>> Array
>>>>> (
>>>>> [forums] => Array
>>>>> (
>>>>> [0] => 3
>>>>> [1] => 8
>>>>> [2] => 5
>>>>> )
>>>>>
>>>>> [topics] => Array
>>>>> (
>>>>> [0] => 5
>>>>> )
>>>>>
>>>>> [posts] => Array
>>>>> (
>>>>> [0] => 5
>>>>> )
>>>>>
>>>>> )
>>>>>
>>>>>
>>>>> Then inside the actual function "getForumChildrenTree" I tried
>>>>> outputting the "treeResult" array using "print_r" after the recursive
>>>>> function "applyForumChildrenTree" as follows:
>>>>>
>>>>>
Code:
>>>>> function getForumChildrenTree( $id )
>>>>> {
>>>>>    $id = intval( $id );
>>>>>    $treeResult = array(
>>>>>        'topics' => array(),
>>>>>        'posts' => array(),
>>>>>        'forums' => array(),
>>>>>    );
>>>>>    applyForumChildrenTree( $id );
>>>>>    print_r($treeResult);
>>>>> }
>>>>>
>>>>>
>>>>> and it showed me a blank array, (default array I created) as follows:
>>>>>
>>>>>
Quote:
>>>>> Array
>>>>> (
>>>>> [topics] => Array
>>>>> (
>>>>> )
>>>>>
>>>>> [posts] => Array
>>>>> (
>>>>> )
>>>>>
>>>>> [forums] => Array
>>>>> (
>>>>> )
>>>>>
>>>>> )
>>>>>
>>>>>
>>>>> Is this a bug? I'm using PHP 5.2.4
>>>>>
>>>>>
>>>> Well you haven't defined anything global in your code, unless you did
>>>> inapplyForumChildrenTree(), in which case it needs to be global
>>>> everywhere that you want to use it as global.
>>>>
>>>> Easiest way would just be to use it like this everywhere:
>>>>
>>>> $GLOBALS['treeResult'] = array(
>>>> 'topics' => array(),
>>>> 'posts' => array(),
>>>> 'forums' => array(),
>>>> );
>>>>
>>>> -Shawn
>>>>
>>>>
>>> After a second look, probably a better alternate would be to have
>>> applyForumChildrenTree() return the array, then use $treeResult =
>>> applyForumChildrenTree( $id );
>>>
>>> -Shawn
>>>
>>>
>>>

>> As I said in my first reply, its a "Recursive function".so I couldn't
>> return the array.
>>
>>

>
> Please reply to the list.
>
> Sure, your function can return an array if it's recursive. It returns
> it to itself and uses whatever logic you need to add to the current
> array or merge or remove or whatever. Regardless, I explained why you
> aren't seeing the vars as global and a better way to do it using the
> $GLOBALS array. I may be off but we would need to see the
> applyForumChildrenTree() to know.
>
> -Shawn
>
>

Yep I'm using globals, thanks :).

function getForumChildrenTree( $id )
{
$id = intval( $id );
$GLOBALS['treeResult'] = array(
'topics' => array(),
'posts' => array(),
'forums' => array(),
);
applyForumChildrenTree( $id );
$treeResult = $GLOBALS['treeResult'];
unset($GLOBALS['treeResult']);
return $treeResult;
}
Reply With Quote
  #6 (permalink)  
Old 03-12-2008
Shawn McKenzie
 
Posts: n/a
Default Re: [PHP] Re: Setting a variable inside a function and making itglobalinsideaninner function doesn't work?

Lamonte wrote:
> Shawn McKenzie wrote:
>> Lamonte wrote:
>>
>>> Shawn McKenzie wrote:
>>>
>>>> Shawn McKenzie wrote:
>>>>
>>>>
>>>>> Lamonte wrote:
>>>>>
>>>>>> Setting a variable inside a function and making it global inside an
>>>>>> inner function doesn't work?
>>>>>>
>>>>>> Right well I have created this function:
>>>>>>
>>>>>>
Code:
>>>>>> function getForumChildrenTree( $id )
>>>>>> {
>>>>>>    $id = intval( $id );
>>>>>>    $treeResult = array(
>>>>>>        'topics' => array(),
>>>>>>        'posts' => array(),
>>>>>>        'forums' => array(),
>>>>>>    );
>>>>>>    applyForumChildrenTree( $id );
>>>>>> }
>>>>>>
>>>>>>
>>>>>> What this function does: Basically this function is set to an id of a
>>>>>> forum id, then theres a variable that stores an array. Then theres a
>>>>>> recursive function called "applyForumChildrenTree" to update the
>>>>>> "treeResult" variable, but it's not exactly working. For some reason
>>>>>> when I did print_r inside the "applyForumChildrenTree" the array
>>>>>> is as
>>>>>> applied:
>>>>>>
>>>>>>
Quote:
>>>>>> Array
>>>>>> (
>>>>>> [forums] => Array
>>>>>> (
>>>>>> [0] => 3
>>>>>> [1] => 8
>>>>>> [2] => 5
>>>>>> )
>>>>>>
>>>>>> [topics] => Array
>>>>>> (
>>>>>> [0] => 5
>>>>>> )
>>>>>>
>>>>>> [posts] => Array
>>>>>> (
>>>>>> [0] => 5
>>>>>> )
>>>>>>
>>>>>> )
>>>>>>
>>>>>>
>>>>>> Then inside the actual function "getForumChildrenTree" I tried
>>>>>> outputting the "treeResult" array using "print_r" after the recursive
>>>>>> function "applyForumChildrenTree" as follows:
>>>>>>
>>>>>>
Code:
>>>>>> function getForumChildrenTree( $id )
>>>>>> {
>>>>>>    $id = intval( $id );
>>>>>>    $treeResult = array(
>>>>>>        'topics' => array(),
>>>>>>        'posts' => array(),
>>>>>>        'forums' => array(),
>>>>>>    );
>>>>>>    applyForumChildrenTree( $id );
>>>>>>    print_r($treeResult);
>>>>>> }
>>>>>>
>>>>>>
>>>>>> and it showed me a blank array, (default array I created) as follows:
>>>>>>
>>>>>>
Quote:
>>>>>> Array
>>>>>> (
>>>>>> [topics] => Array
>>>>>> (
>>>>>> )
>>>>>>
>>>>>> [posts] => Array
>>>>>> (
>>>>>> )
>>>>>>
>>>>>> [forums] => Array
>>>>>> (
>>>>>> )
>>>>>>
>>>>>> )
>>>>>>
>>>>>>
>>>>>> Is this a bug? I'm using PHP 5.2.4
>>>>>>
>>>>> Well you haven't defined anything global in your code, unless you did
>>>>> inapplyForumChildrenTree(), in which case it needs to be global
>>>>> everywhere that you want to use it as global.
>>>>>
>>>>> Easiest way would just be to use it like this everywhere:
>>>>>
>>>>> $GLOBALS['treeResult'] = array(
>>>>> 'topics' => array(),
>>>>> 'posts' => array(),
>>>>> 'forums' => array(),
>>>>> );
>>>>>
>>>>> -Shawn
>>>>>
>>>> After a second look, probably a better alternate would be to have
>>>> applyForumChildrenTree() return the array, then use $treeResult =
>>>> applyForumChildrenTree( $id );
>>>>
>>>> -Shawn
>>>>
>>>>
>>> As I said in my first reply, its a "Recursive function".so I couldn't
>>> return the array.
>>>
>>>

>>
>> Please reply to the list.
>>
>> Sure, your function can return an array if it's recursive. It returns
>> it to itself and uses whatever logic you need to add to the current
>> array or merge or remove or whatever. Regardless, I explained why you
>> aren't seeing the vars as global and a better way to do it using the
>> $GLOBALS array. I may be off but we would need to see the
>> applyForumChildrenTree() to know.
>>
>> -Shawn
>>
>>

> Yep I'm using globals, thanks :).
>
> function getForumChildrenTree( $id )
> {
> $id = intval( $id );
> $GLOBALS['treeResult'] = array(
> 'topics' => array(),
> 'posts' => array(),
> 'forums' => array(),
> );
> applyForumChildrenTree( $id );
> $treeResult = $GLOBALS['treeResult'];
> unset($GLOBALS['treeResult']);
> return $treeResult;
> }

Good job.

Actually, if you used $GLOBALS['treeResult'] in applyForumChildrenTree()
then you could skip the:

$treeResult = $GLOBALS['treeResult'];
unset($GLOBALS['treeResult']);
return $treeResult;

and just:

return $GLOBALS['treeResult'];

or use $GLOBALS['treeResult']; somewhere later instead of returning it.

Also, I would be curious to see applyForumChildrenTree() because chances
are great that you can return an array and not use globals at all unless
it is "really" needed somewhere else in the app.

-Shawn
Reply With Quote
  #7 (permalink)  
Old 03-12-2008
Lamonte
 
Posts: n/a
Default Re: [PHP] Re: Setting a variable inside a function and making itglobalinsideaninner function doesn't work?

Shawn McKenzie wrote:
> Lamonte wrote:
>
>> Shawn McKenzie wrote:
>>
>>> Lamonte wrote:
>>>
>>>
>>>> Shawn McKenzie wrote:
>>>>
>>>>
>>>>> Shawn McKenzie wrote:
>>>>>
>>>>>
>>>>>
>>>>>> Lamonte wrote:
>>>>>>
>>>>>>
>>>>>>> Setting a variable inside a function and making it global inside an
>>>>>>> inner function doesn't work?
>>>>>>>
>>>>>>> Right well I have created this function:
>>>>>>>
>>>>>>>
Code:
>>>>>>> function getForumChildrenTree( $id )
>>>>>>> {
>>>>>>>    $id = intval( $id );
>>>>>>>    $treeResult = array(
>>>>>>>        'topics' => array(),
>>>>>>>        'posts' => array(),
>>>>>>>        'forums' => array(),
>>>>>>>    );
>>>>>>>    applyForumChildrenTree( $id );
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> What this function does: Basically this function is set to an id of a
>>>>>>> forum id, then theres a variable that stores an array. Then theres a
>>>>>>> recursive function called "applyForumChildrenTree" to update the
>>>>>>> "treeResult" variable, but it's not exactly working. For some reason
>>>>>>> when I did print_r inside the "applyForumChildrenTree" the array
>>>>>>> is as
>>>>>>> applied:
>>>>>>>
>>>>>>>
Quote:
>>>>>>> Array
>>>>>>> (
>>>>>>> [forums] => Array
>>>>>>> (
>>>>>>> [0] => 3
>>>>>>> [1] => 8
>>>>>>> [2] => 5
>>>>>>> )
>>>>>>>
>>>>>>> [topics] => Array
>>>>>>> (
>>>>>>> [0] => 5
>>>>>>> )
>>>>>>>
>>>>>>> [posts] => Array
>>>>>>> (
>>>>>>> [0] => 5
>>>>>>> )
>>>>>>>
>>>>>>> )
>>>>>>>
>>>>>>>
>>>>>>> Then inside the actual function "getForumChildrenTree" I tried
>>>>>>> outputting the "treeResult" array using "print_r" after the recursive
>>>>>>> function "applyForumChildrenTree" as follows:
>>>>>>>
>>>>>>>
Code:
>>>>>>> function getForumChildrenTree( $id )
>>>>>>> {
>>>>>>>    $id = intval( $id );
>>>>>>>    $treeResult = array(
>>>>>>>        'topics' => array(),
>>>>>>>        'posts' => array(),
>>>>>>>        'forums' => array(),
>>>>>>>    );
>>>>>>>    applyForumChildrenTree( $id );
>>>>>>>    print_r($treeResult);
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> and it showed me a blank array, (default array I created) as follows:
>>>>>>>
>>>>>>>
Quote:
>>>>>>> Array
>>>>>>> (
>>>>>>> [topics] => Array
>>>>>>> (
>>>>>>> )
>>>>>>>
>>>>>>> [posts] => Array
>>>>>>> (
>>>>>>> )
>>>>>>>
>>>>>>> [forums] => Array
>>>>>>> (
>>>>>>> )
>>>>>>>
>>>>>>> )
>>>>>>>
>>>>>>>
>>>>>>> Is this a bug? I'm using PHP 5.2.4
>>>>>>>
>>>>>>>
>>>>>> Well you haven't defined anything global in your code, unless you did
>>>>>> inapplyForumChildrenTree(), in which case it needs to be global
>>>>>> everywhere that you want to use it as global.
>>>>>>
>>>>>> Easiest way would just be to use it like this everywhere:
>>>>>>
>>>>>> $GLOBALS['treeResult'] = array(
>>>>>> 'topics' => array(),
>>>>>> 'posts' => array(),
>>>>>> 'forums' => array(),
>>>>>> );
>>>>>>
>>>>>> -Shawn
>>>>>>
>>>>>>
>>>>> After a second look, probably a better alternate would be to have
>>>>> applyForumChildrenTree() return the array, then use $treeResult =
>>>>> applyForumChildrenTree( $id );
>>>>>
>>>>> -Shawn
>>>>>
>>>>>
>>>>>
>>>> As I said in my first reply, its a "Recursive function".so I couldn't
>>>> return the array.
>>>>
>>>>
>>>>
>>> Please reply to the list.
>>>
>>> Sure, your function can return an array if it's recursive. It returns
>>> it to itself and uses whatever logic you need to add to the current
>>> array or merge or remove or whatever. Regardless, I explained why you
>>> aren't seeing the vars as global and a better way to do it using the
>>> $GLOBALS array. I may be off but we would need to see the
>>> applyForumChildrenTree() to know.
>>>
>>> -Shawn
>>>
>>>
>>>

>> Yep I'm using globals, thanks :).
>>
>> function getForumChildrenTree( $id )
>> {
>> $id = intval( $id );
>> $GLOBALS['treeResult'] = array(
>> 'topics' => array(),
>> 'posts' => array(),
>> 'forums' => array(),
>> );
>> applyForumChildrenTree( $id );
>> $treeResult = $GLOBALS['treeResult'];
>> unset($GLOBALS['treeResult']);
>> return $treeResult;
>> }
>>

> Good job.
>
> Actually, if you used $GLOBALS['treeResult'] in applyForumChildrenTree()
> then you could skip the:
>
> $treeResult = $GLOBALS['treeResult'];
> unset($GLOBALS['treeResult']);
> return $treeResult;
>
> and just:
>
> return $GLOBALS['treeResult'];
>
> or use $GLOBALS['treeResult']; somewhere later instead of returning it.
>
> Also, I would be curious to see applyForumChildrenTree() because chances
> are great that you can return an array and not use globals at all unless
> it is "really" needed somewhere else in the app.
>
> -Shawn
>
>

True, I could, actually I was trying something and my code is exactly
like that. :)
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 04:53 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0