这可能是一个愚蠢的问题,很抱歉有任何令人困惑的句子。。我不知道我是否能很好地解释这个问题,让你理解,但$_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']
中获取值?非常感谢。
http://php.net/manual/en/function.each.php
从数组中返回当前键和值对,并移动数组光标。
执行each()后,数组光标将留在数组的下一个元素上,如果它碰到数组的末尾,则会超过最后一个元素。如果要使用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>";
另一个答案是正确的,但有更好的方法:
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()。