Jim Lucas wrote:
Jim Lucas wrote:
tedd wrote:
At 11:10 PM +0100 10/1/08, Nathan Rixham wrote:
[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?
To 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
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@xxxxxxxxx/002.php
With RG off, it works as expected. But, with RG on it gives the results he
was seeing.
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++) {
$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@xxxxxxxxxxx )
{
Senior Web Developer
php + java + flex + xmpp + xml + ecmascript
web development edinburgh | http://kraya.co.uk/
}
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php