我正在执行以下代码以确保之前未调用的下一个随机数。
do {
$n = rand(1,19);
} while(in_array($n, $myarray));
$thisqno = $n;
$myarray
是一个数字会话,因为:
$ myarray = array($ _ SESSION ['pastqs']);
$_SESSION['pastqs']
等于:1,4,6,12,10等。我没有收到错误,但它会返回1到19之间的任意随机数,包括$myarray/$_SESSION['pastqs']
中的任意一个
如果我将$ myarray更改为这样的硬编码数字列表:
$ myarray = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
工作正常!所以我假设它不喜欢我的会话由于某种原因。我正在将所有数据打印到页面上,当回显会话时,它会正确打印我正在存储的数字......
任何想法??
谢谢:)
答案 0 :(得分:0)
如果$_SESSION['pastqs']
本身已经是数组,则应使用
$myarray = isset($_SESSION['pastqs']) ? $_SESSION['pastqs'] : array();
// instead of $myarray = array($_SESSION['pastqs']);
你所拥有的是像
$myarray = array(
array(1, 4, 6)
);