当所有检索值在laravel中具有相同的会话键时,如何检查会话数组是不是具有唯一的ID
Posted
技术标签:
【中文标题】当所有检索值在laravel中具有相同的会话键时,如何检查会话数组是不是具有唯一的ID【英文标题】:How to check if session array has an id which is unique when all retrieve value has same session key in laravel当所有检索值在laravel中具有相同的会话键时,如何检查会话数组是否具有唯一的ID 【发布时间】: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 然后抛出上述错误
【参考方案1】:
如果有人遇到同样的问题,我终于解决了我的问题,我在构造函数中声明了 2 个会话,一个用于存储数组,第二个用于保存不在数组中的会话值,因此我可以用它查询我的数据库
public function __construct()
$this->middleware('auth');
$val=[12];
$rand=$val[0];
Session::put('keys',$val);
$value=session('keys');
Session::put('Key2',$rand);
$v_random=session('Key2');
那么这是我的逻辑方法
function random()
$output=DB::table('questions')->inRandomOrder()->first();
return $output;
function checkRandomvalue($stored)
global $value;
global $v_random;
$id=$stored->id;
$value=session('keys');
if(array_search($id,$value,true)==true)
return;
else if(array_search($id,$value,true)==false)
Session::push('keys',$id);
session()->save();
$value=session('keys');
Session::put('Key2',$id);
//$v_random=session('Key2');
//dd("good", $id, $value);
//dd(session($key));;
do
$r=random();
$result=checkRandomvalue($r);
while($result);
$v_random=session('Key2');
$output=DB::table('questions')->where('id',$v_random)->get();
【讨论】:
以上是关于当所有检索值在laravel中具有相同的会话键时,如何检查会话数组是不是具有唯一的ID的主要内容,如果未能解决你的问题,请参考以下文章
页脚值在 laravel 的 foreach 中打印相同的数据