这可能是一个愚蠢的问题,对任何令人困惑的句子感到抱歉。我不知道我是否能够很好地解释这个问题以使你理解,但$_SESSION
似乎无法重复一次在页面上。
session_start();
while (list($a, $b) = each($_SESSION['temp']))
echo "<li>$a - $b</li>";
上面的代码还可以,但如果我在同一页面上有$_SESSION['temp']
,那么它就不会显示任何内容......
session_start();
while (list($a, $b) = each($_SESSION['temp']))
echo "<li>$a - $b</li>";
while (list($c, $d) = each($_SESSION['temp']))
echo "<li>$c - $d</li>"; /* <=== nothing shown :( */
要从$_SESSION['temp'],
获取值,我需要为其命名:
session_start();
$temp = $_SESSION['temp']; /* <== new name */
while (list($a, $b) = each($_SESSION['temp']))
echo "<li>$a - $b</li>";
while (list($c, $d) = each($temp))
echo "<li>$c - $d</li>"; /* <=== now shown :) */
您能否告诉我$_SESSION['temp']
如何在同一页面上使用两次或更多次?
有没有更好的方法从$_SESSION['temp']
获取价值?
谢谢。
答案 0 :(得分:2)
http://php.net/manual/en/function.each.php
从数组中返回当前键和值对并使数组光标前进。
执行each()之后,数组游标将保留在数组的下一个元素上,或者如果它到达数组末尾则超过最后一个元素。如果要使用每个数组再次遍历数组,则必须使用reset()
。
session_start();
while (list($a, $b) = each($_SESSION['temp']))
echo "<li>$a - $b</li>";
reset($_SESSION);
while (list($c, $d) = each($_SESSION['temp']))
echo "<li>$c - $d</li>";
答案 1 :(得分:1)
另一个答案是正确的,但有更好的方法:
foreach ($_SESSION['temp'] as $a => $b) {
// do what you wanted with each item
};
// repeat the code here
foreach循环在使用后不需要重置,因此更容易使用(http://php.net/manual/en/control-structures.foreach.php):
当foreach首次开始执行时,内部数组指针会自动重置为数组的第一个元素。这意味着您不需要在foreach循环之前调用reset()。