php 循环时在会话中保存数组值
php save array value in a session while looping
我有一个这样的数组
[0] => Mike
[1] => 933
[2] => Josh
[3] => 1245
...
像这样打印出 table
Name Total Change
Mike 933 x
Josh 1245 x
使用以下脚本
$counter = 1;
$sessionID = 0;
foreach ($array as $value) {
if(++$counter % 2 === 0) {
echo "<tr><td class='value'>".$value."</td>";
} else {
echo "<td class='value'>".$value."</td>";
$sessionID++;
echo "<td class='update'>"x"</td>";
}
}
循环时,我想在会话中保存当前的“$value”,这样当用户刷新页面时,x 将显示 $value - $_SESSION[$oldvalue],例如 943-933=10,并且结果将是
Name Total Change
Mike 943 10
Josh 1045 -200
希望你明白我要追求的是什么。如果有帮助,下面是单个用户的工作测试版本。到目前为止,我已经尝试过相同的想法但没有成功。
$old = ($array[1] - $_SESSION["oldvalue"]);
echo "<tr><td class='value'>".$array[0]."";
echo "</td><td class='value'>".$array[1]."";
$_SESSION["oldvalue"] = $array[1];
if ($old > 100) {
echo "</td><td class='update'>";
echo "<b>". $old ."</b>";
} else {
echo "</td><td class='value'>";
echo $old;
}
在循环时,将所有值设置到一个数组中,然后将该数组设置为您的 $_SESSION['old_values'].
然后为您的输出执行类似的操作。
$i = 0;
foreach($array as $value){
$value = $value - $_SESSION['old_values'][$i];
$i++;
}
在循环之前将整个数组保存到会话中。
$_SESSION['old_values'] = $array;
然后你可以在遍历时比较两个数组,并计算变化:
foreach ($array as $i => $value) {
if (!($i % 2)) {
echo '<tr><td class="value">' . $value . '</td>';
} else {
$change = 'x';
if (isset($_SESSION['old_value'][$i])) {
$change = $_SESSION['old_value'][$i] - $value;
}
echo '<td class="update">' . $change . '</td></tr>';
}
}
无论如何,我认为有更好的方法来完成您正在做的事情。例如,如果你的数组结构如下:
[
'Mike' => 933,
'Josh' => 1245
]
测试
<table>
<?php
// Current data
$array = ['Mike', 933, 'Josh', 1245];
// Imagine the previous array was saved to the session:
$_SESSION['old_value'] = ['Mike', 953, 'Josh', 1235];
// Echo the table
foreach ($array as $i => $value) {
$even = !($i % 2);
if ($even) {
echo '<tr><td class="value">' . $value . '</td>';
} else {
$change = 'x';
if (isset($_SESSION['old_value'][$i])) {
$change = $_SESSION['old_value'][$i] - $value;
}
echo '<td class="update">' . $change . '</td></tr>';
}
}
?>
</table>
给出:
Mike 20
Josh -10
我有一个这样的数组
[0] => Mike
[1] => 933
[2] => Josh
[3] => 1245
...
像这样打印出 table
Name Total Change
Mike 933 x
Josh 1245 x
使用以下脚本
$counter = 1;
$sessionID = 0;
foreach ($array as $value) {
if(++$counter % 2 === 0) {
echo "<tr><td class='value'>".$value."</td>";
} else {
echo "<td class='value'>".$value."</td>";
$sessionID++;
echo "<td class='update'>"x"</td>";
}
}
循环时,我想在会话中保存当前的“$value”,这样当用户刷新页面时,x 将显示 $value - $_SESSION[$oldvalue],例如 943-933=10,并且结果将是
Name Total Change
Mike 943 10
Josh 1045 -200
希望你明白我要追求的是什么。如果有帮助,下面是单个用户的工作测试版本。到目前为止,我已经尝试过相同的想法但没有成功。
$old = ($array[1] - $_SESSION["oldvalue"]);
echo "<tr><td class='value'>".$array[0]."";
echo "</td><td class='value'>".$array[1]."";
$_SESSION["oldvalue"] = $array[1];
if ($old > 100) {
echo "</td><td class='update'>";
echo "<b>". $old ."</b>";
} else {
echo "</td><td class='value'>";
echo $old;
}
在循环时,将所有值设置到一个数组中,然后将该数组设置为您的 $_SESSION['old_values'].
然后为您的输出执行类似的操作。
$i = 0;
foreach($array as $value){
$value = $value - $_SESSION['old_values'][$i];
$i++;
}
在循环之前将整个数组保存到会话中。
$_SESSION['old_values'] = $array;
然后你可以在遍历时比较两个数组,并计算变化:
foreach ($array as $i => $value) {
if (!($i % 2)) {
echo '<tr><td class="value">' . $value . '</td>';
} else {
$change = 'x';
if (isset($_SESSION['old_value'][$i])) {
$change = $_SESSION['old_value'][$i] - $value;
}
echo '<td class="update">' . $change . '</td></tr>';
}
}
无论如何,我认为有更好的方法来完成您正在做的事情。例如,如果你的数组结构如下:
[
'Mike' => 933,
'Josh' => 1245
]
测试
<table>
<?php
// Current data
$array = ['Mike', 933, 'Josh', 1245];
// Imagine the previous array was saved to the session:
$_SESSION['old_value'] = ['Mike', 953, 'Josh', 1235];
// Echo the table
foreach ($array as $i => $value) {
$even = !($i % 2);
if ($even) {
echo '<tr><td class="value">' . $value . '</td>';
} else {
$change = 'x';
if (isset($_SESSION['old_value'][$i])) {
$change = $_SESSION['old_value'][$i] - $value;
}
echo '<td class="update">' . $change . '</td></tr>';
}
}
?>
</table>
给出:
Mike 20
Josh -10