in_array不喜欢会话中存储的数字列表

时间:2013-12-08 12:24:34

标签: php

我正在执行以下代码以确保之前未调用的下一个随机数。

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);

工作正常!所以我假设它不喜欢我的会话由于某种原因。我正在将所有数据打印到页面上,当回显会话时,它会正确打印我正在存储的数字......

任何想法??

谢谢:)

1 个答案:

答案 0 :(得分:0)

如果$_SESSION['pastqs']本身已经是数组,则应使用

$myarray = isset($_SESSION['pastqs']) ? $_SESSION['pastqs'] : array();
// instead of $myarray = array($_SESSION['pastqs']);

你所拥有的是像

$myarray = array(
    array(1, 4, 6)
);