我包含的文件(include.php)是这样的:
<?php
$myarray=(a,b,c);
shuffle($myarray);
?>
我的主要php文件是:
include('include.php');
if isset($_POST['submit_button']){
echo "Button was clicked";
echo $myarray;
}
else {
echo "Not clicked.";
echo $myarray;
}
?>
<form method='POST'><input type='submit' name='submit_button'></form>
为什么单击按钮后$myarray
的元素以不同的顺序显示?它不是只洗过一次吗?
如何防止多次执行洗牌?(这样我就可以在点击按钮之前和之后以相同的顺序显示myarray的元素)
您的PHP文件会根据每个请求进行解释。现在,系统中没有内存,因此文件无法"记住"数组已经被打乱。此外,如果您对数组进行一次混洗,然后第二次加载页面,并管理而不是对其进行混洗,则数组将为(a,b,c),因为变量初始化为(a、b、c),并且从不混洗。
要做你想做的事,如果我理解正确的话,你可以使用会话。
$myarray=(a,b,c);
if (!isset($_SESSION['shuffled'])) {
shuffle($myarray);
$_SESSION['shuffled'] = $myarray;
} else {
$myarray = $_SESSION['shuffled'];
}
之所以会发生这种情况,是因为每次加载页面时,都会包含文件,这也会再次打乱数组。
请尝试使用serialize()
,然后按所需顺序POST阵列。使用unserialize()
检索
http://www.php.net/manual/en/function.serialize.php