循环遍历会话寻找特定值

时间:2016-11-25 15:09:59

标签: laravel

我保存了像这样的会话值

  

Session :: put('image.hash。'。$ imageHash,$ imageHash);

稍后我想检查所有会话是image.hash。*因为我以后不知道$ imageHash的值

我试过这个

  

如果(会话::具有( 'image.hash。*'))

但是当然它不起作用。如果我不知道最后一部分

,我如何遍历所有这些会话值
  

image.hash.djn6ago

     

image.hash.fJtbru

     

image.hash.ai12de

我也试过这个

$session = Session::all();

forearch ($session as $value) {
    if (strpos($value, 'image.hash') !== false)  {
        echo $value;
    }
}

但是当我运行该代码时,我得到了这个

  

strpos()期望参数1为字符串,给定数组

编辑:

管理循环浏览所有感兴趣的键,但现在又遇到了另一个问题。

我做了

  

DD($会议);

找出会话中有哪些键和值,发现我的图像键指向数组而不是像我预期的那样的字符串,这是它们的外观

  "image-uploads/2016/11/25/15/twest-test" => array:1 [▼
    "jpg" => "uploads/2016/11/25/15/twest-test.jpg"
  ]
  "image-uploads/2016/11/25/15/moviefone" => array:1 [▼
    "png" => "uploads/2016/11/25/15/moviefone.png"
  ]

这就是我创建它们的方式

  

Session :: put('image - '。$ folder。'/'。$ name,$ folder。'/'。$ name);

我现在有问题访问值信息,因为它在一个数组中,这个数组键似乎是jpg,png,gif,bmp等,具体取决于上传的图像。我不明白如何添加此密钥,因为我没有在会话密钥中添加数组而是添加字符串。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为你的$ value包含数组。请在foreach中调试或回显gettype($ value)并查看输出。

$session = Session::all();
    forearch ($session as $value) {
        echo gettype($value)
        if (strpos($value, 'image.hash') !== false)  {
            echo $value;
        }
    }

答案 1 :(得分:1)

编辑问题:请在foreach循环中调试为dd($ value)。一旦循环执行,它将显示一次$ value的输出,然后在此处共享输出。谢谢。

$session = Session::all();
    forearch ($session as $value) {
        echo dd($value)
        if (strpos($value, 'image.hash') !== false)  {
            echo $value;
        }
    }