【问题标题】:Dynamic $_SESSION variable session names for loop PHP循环 PHP 的动态 $_SESSION 变量会话名称
【发布时间】:2017-09-15 21:55:18
【问题描述】:

我正在使用简单的 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)

我怎样才能做到这一点?

【问题讨论】:

  • 代码有些奇怪,请注意您在循环内创建密钥,但在循环完成后仅在循环外回显会话变量一次。回声不应该在$ttt = 'tuesday_'.$v; 的循环内吗?另外,您回显$newdateformat,因为$_SESSION[$ttt] 已经具有其价值(我有90% 的把握)。
  • @Mr_KoKa:我知道,但是当我这样做 for($v=1;$v&lt;=4;$v++){ $ttt = 'tuesday_'.$v; echo $_SESSION[$ttt] = $newdateformat; } 时,forloop 在每个日期循环 4 次,这不是预期的效果。
  • 好的,所以你可以用$ttt = 'tuesday_4';替换你的循环(或者代码不完整)。您仍然需要看一下我在回答中写的第一件事。

标签: php session for-loop


【解决方案1】:

我注意到两件事:

1. 假设我们将$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_2tuesday_3 的 ano 不会回显/修改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2021-11-18
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多