2013-02-15 40 views
2

這是基本的東西,但我似乎是太初學者,使其工作。在這裏,我想以某種方式讓我的100個陣列進入不同的會話,但類似的東西似乎不工作,我不知道爲什麼?如何使用for循環將索引數組保存到會話中?

for($i=1; $i<=100; $i++) { 
    $age = rand(1,100); 
    $table[] = $age; 
    $_SESSION[$i] = $table[]; 
    } 

後來我需要能夠呼應$年齡印刷也使用循環所有100個會話。如果我再喜歡那裏,它只是說未定義覆蓋,並給出了所有100美元的數量。

for($i=1; $i<=100; $i++) { 
    echo $_SESSION[$i]; 
    } 
+0

'$ _SESSION [$ i] = $ age'? – 2013-02-15 20:40:54

+1

爲什麼不直接將完整的數組添加到特定的會話密鑰? '$ _SESSION ['ages'] = $ table' – 2013-02-15 20:40:58

回答

1
for($i=1; $i<=100; $i++) { 
    $age = rand(1,100); 
    $ages[] = $age; 
} 

$_SESSION['ages'] = $ages; 

在你的其他腳本

$ages = $_SESSION['ages']; 
foreach($ages as $age) { 
    echo $age; 
} 
0

你可以這樣做:

for($i=1; $i<=100; $i++) { 
    $age = rand(1,100); 
    $table[] = $_SESSION["ages"][$i] = $age; 
} 
+0

這仍然是無效的PHP語法。您可能不會爲$ _SESSION超全球設置數字索引 – cspray 2013-02-15 20:50:00

+1

感謝和抱歉,已經修復。 – Stichoza 2013-02-15 20:51:24

0

你不能$_SESSION工作,就好像它是一個正常的陣列,它不是」噸。使用$_SESSION時,不得使用數字索引。下面的代碼是完全無效的,並且會引起通知,且有可能導致您的$_SESSION不填充你期望

// bad code! 

$_SESSION[1] = 'foo'; // error 
$_SESSION[] = 'bar'; // error 
for ($i = 1; $i <= 100; $i++) { 
    $_SESSION[$i] = rand(1, 100); // error 100x 
} 

像布拉姆Gerritsen的建議在他的回答我會改變的代碼是這樣的:

for($i=1; $i<=100; $i++) { 
    $age = rand(1,100); 
    $ages[] = $age; 
} 

$_SESSION['ages'] = $ages; 

有關更多信息check out this PHP bug report