【发布时间】:2020-04-21 14:11:07
【问题描述】:
我正在开发一个测验网络应用程序,我正在从数据库中随机获取我的数据,并将其保存在会话数组中。现在我想检查检索到的数据的 id 是否在会话数组中,如果是,我想生成一个新值,如果不在我想将它推送到我搜索过但无法弄清楚的数组中任何帮助将不胜感激。
这是我最初所做的,但会话存在总是返回 true,因为我使用的是相同的密钥;
function random()
{
$output=DB::table('questions')->inRandomOrder()->first();
return $output;
}
function checkRandomvalue($stored){
if(session()->exists('question'))
{
random();
}
session()->push('question',$stored);
}
do{
$r=random();
$result=checkRandomvalue($r);
}
while($result);
这就是我现在所做的 checkRandomvalue 函数但是这个 $question=session('question.0.id',[]);正在返回 null 使索引始终为假
function checkRandomvalue($stored){
$id=$stored->id;
$question=session('question.0.id',[]);
$index=array_search($id,$question);
//dd($index);
if($index==true)
{
random();
}
$question[]=$id;
session()->put('question',$id);
}
【问题讨论】:
-
random();是什么?它应该是 $id = random();代替? -
尝试从会话第二个参数中删除数组[]
-
@daremachine 谢谢 random() 是对生成随机数的函数的随机调用。如果我删除 [] 作为第二个参数,我会收到此错误“array_search() 需要参数 2为数组,给定空值”,因为问题将不再是一个数组,并且 array_search 然后抛出上述错误
标签: php arrays laravel session