首页 > 解决方案 > 无法访问数组以进行反序列化

问题描述

我将我的 json 过滤器作为序列化数据存储在我的 postgre 数据库中,插入效果很好。

现在,我需要查询选择,并反序列化我的过滤器。

Postgresql 查询给了我这个数组数组 ($results) :

  array (size=3)
  0 => 
    array (size=4)
      'id_filtres_stock' => int 7
      'id_liseo_utilisateurs' => int 46
      'filtres' => string 'O:8:"stdClass":1:{s:5:"ville";s:9:"ABBEVILLE";}' (length=47)
      'nom_filtre' => null
  1 => 
    array (size=4)
      'id_filtres_stock' => int 8
      'id_liseo_utilisateurs' => int 46
      'filtres' => string 'O:8:"stdClass":0:{}' (length=19)
      'nom_filtre' => string 'test' (length=4)
  2 => 
    array (size=4)
      'id_filtres_stock' => int 9
      'id_liseo_utilisateurs' => int 46
      'filtres' => string 'O:8:"stdClass":1:{s:7:"nom_pdg";s:16:"AUCHAN BAGNOLET ";}' (length=57)
      'nom_filtre' => string 'test' (length=4)

我需要使用 unserialize() 将“过滤器”转换回来,所以我试图访问过滤器变量:

echo($results[0][0]->filtres) ;

它不起作用并显示整个数组。

我什至试过这个:

$d = (string)$results[0][0]->filtres;

$d = unserialize($d); 

没有运气。

任何想法 ?

编辑:好的,我现在可以很好地访问它:

 $d = $result[0]['filtres'];
 $f = unserialize($d); 

谢谢,已解决!

标签: phppostgresqlserialization

解决方案


你只需要像这样得到它:

$filtres = results[0]['filtres'];

然后你可以反序列化它:

$filtres = unserialize($filtres);

推荐阅读