Re: Re: SESSION array problems UPDATE
| From: | Nathan Rixham | Date: | Thu, 02 Oct 2008 15:46:31 +0000 |
| Subject: | Re: Re: SESSION array problems UPDATE | ||
| References: | 1 2 3 4 5 6 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-281376@lists.php.net to get a copy of this message | ||
Jim Lucas wrote:
Jim Lucas wrote:that explains my earlier post on the matter: in this case.. what's happened is: $_SESSION['first_name'] is a reference to a variable $first (or whatever is in your for loop) $_SESSION['last_name'] is a reference to a variable $last (or whatever is in your for loop) when you've set $last and $first to string's in the for loop it's passed the variable by reference back to $_SESSION['first_name'] and $_SESSION['last_name'] as strings; when it hit's the second iteration on the for loop it now has strings to deal with so uses the $key (holding integer 1 at this stage) as a string offset thus giving you the second character (offset [1]) of the string variables $last/$first. now set to 'cable'/'diane' thus giving you the 'a'/'i'. when it does pass three there is no offset [2] so gives you nothing. *phew* reproduce code! <?php $userids = array('6156','1234','8867'); $first = array('Diane','Big','Joe'); $last = array('Cable','Ron','Dirt'); function save_to_session( ) { global $userids , $first , $last; $_SESSION['user_id'] = &$userids; $_SESSION['first_name'] = &$first; $_SESSION['last_name']= &$last; } save_to_session( ); print_r( $_SESSION ); $num_users = count($_SESSION['user_id']); for ($i = 0; $i < $num_users; $i++) {tedd wrote:With RG off, it works as expected. But, with RG on it gives the results he was seeing.At 11:10 PM +0100 10/1/08, Nathan Rixham wrote:Well, I would have to say it is a configuration issue on your server. Here is the results for my test with your code. Works fine. http://www.cmsws.com/examples/php/testscripts/tedd.sperling@gmail.com/002.phpTo all: The code provided by nathan works for me as well. However, the problem is not easily explained, but I can demonstrate it -- try this: http://www.webbytedd.com/zzz/index.php * A complete listing of the code follows the demo. When the code is first loaded, the session variables are defined and populated. Proof of this is shown in the top left corner of the page, which reports: Cable Diane Ron Big Dirt Joe Now click the "Continue" button and you will be presented with the next step which shows a list of the SESSION variables in both the top left corner AND immediately below "Step 2". Everything is righteous to there. However, the next portion of the code is the foreach loop where the first SESSION pair is output correctly, but the rest aren't. This is followed by another listing of the SESSION variables and this time is shows that they have completely disappeared. Okay gang -- what's up with that? Cut and paste the code and see for yourself. Cheers, tedd[tested - works] -snip- ?> regards! nathan :)I need to re-address this.. tedd your original code works fine over here; as does the code I sent you, and the code jay submitted first.. do us a favour, copy and paste exactly what I just handed through and run it; are the results correct?
$first = $_SESSION['first_name'][$i];
$last = $_SESSION['last_name'][$i];
echo "$last, $first\n";
}
?>
lol to think ti was just register globals - thats why i don't use globals!
ps: tedd; you could have got to the bottom of this earlier by having error reporting set to include notices :)
--
nathan ( nathan@kraya.co.uk )
{
Senior Web Developer
php + java + flex + xmpp + xml + ecmascript
web development edinburgh | http://kraya.co.uk/
}