2017-09-15 90 views
0

我使用簡單的for循環打印日期創建動態$_SESSION變量。

if($dateweekday ==='Tuesday'){ 
for ($v=1;$v<=4;$v++){ 
$ttt = 'tuesday_'.$v; 
} 
echo $_SESSION[$ttt] = $newdateformat ; 
echo "<br>"; 
} 

結果

2017-9-19 
2017-9-26 
2017-10-03 
2017-10-10 

看起來不錯。但後來我擔心的是$_SESSION[$ttt]的價值。結果應該是

$_SESSION['tuesday_1'] = 2017-9-19; 
$_SESSION['tuesday_2'] = 2017-9-26; 
$_SESSION['tuesday_3'] = 2017-10-03; 
$_SESSION['tuesday_4'] = 2017-10-10; 

當我var_dump($_SESSION[$ttt])這是我得到

string(10) 
string(9) 
string(9) 
string(9) 

我怎樣才能使這項工作?

+0

代碼有一些奇怪的地方,請注意,您在內循環中創建了鍵,但在循環完成後,您只在外循環中回顯會話變量。不應該使用'$ ttt ='tuesday _'循環內部的回聲。$ v;'?同樣,你將'$ newdateformat'作爲'$ _SESSION [$ ttt]'已經具有它的價值(我對此有90%的把握)。 –

+0

@Mr_KoKa: \t 我知道,但是當我這樣做時($ v = 1; $ v <= 4; $ v ++){tt = echo $ _SESSION [$ ttt] = $ newdateformat; }' forloop循環在每個日期4次,這是不是所需的效果。 –

+0

好的,你可以用'$ ttt ='tuesday_4';'(或者代碼不完整)替換你的循環。你仍然需要看看我在答案中寫的第一件事。 –

回答

0

我注意到兩兩件事:

假設我們有$t設置爲'value_before'

$t = 'value_before'; 

現在:

echo $t = 'value_after'; 

上面的代碼等於:

$t = 'value_after'; 
echo $t; 

所以結果是迴應'value_after',你永遠不會迴應舊值('value_before')。

2.我注意到的另一件事是,你在一個循環中準備的變量很多次,然後呼應它只有一次,你的這部分代碼:

for ($v=1;$v<=4;$v++){ 
    $ttt = 'tuesday_'.$v; 
} 

echo $_SESSION[$ttt] = $newdateformat; 

所以只有你的事回聲是'$_SESSION['tuesday_4'] = $newdateformat'tuesday_1tuesday_2,tuesday_3的ano未被回顯/修改。