将查询出的数组存入redis php

我们从数据库查询出来的数据一般为数组的形式,而redis是不支持存入数组的。

通常我们首先想到的就是将数组转化为json数据,再将json存入redis,之后取出时再将json转化为php数组。

但将查出的数组数据是不能直接用json_encode()的,因为这样会将一组正常的json最终再通过json_decode()转化,会得到一个包含对象的数组,不是原本的数组,而这样含有对象的数组是没法直接被遍历输出的。

解决方法:给json_encode()、json_decode函数传入第二个参数true,即:json_encode($json,true);json_decode($json,true);默认是false,即对象;true是数组。

这样得到的就都是数组了。

数据结构:

要存入的数组:

E:\Project\lib\Models\Complaint.php:476:
array (size=69)
  'id' => int 103863
  'channel' => string 'ios:appstore' (length=12)
  'version_code' => string '30400' (length=5)
  'source_type' => string 'client' (length=6)
  'os' => string 'ios' (length=3)
  'app' => string 'sdsgzxz' (length=3)
  'inner_app' => string 'dsvvs' (length=3)
  'fund_source_name' => string '理财' (length=12)
  'fund_loan_order_info' => 
    array (size=1)
      0 => 
        array (size=12)
          'id' => int 262
          'order_number' => string '213' (length=23)
          'loan_apply_code' => string '1231' (length=19)
          'status_history' => string '0,5,6,7' (length=7)
          'status' => string '8' (length=1)
          'failed_reason' => null
          'funding_time' => null'fund_order_number' => string '12312' (length=23)
          'fund_order_status' => string '8' (length=1)

第二个参数默认为false的数据结构:

E:\Project\lib\Models\Complaint.php:476:
object(stdClass)[17]
  public 'id' => int 103863public 'os' => string 'ios' (length=3)
  public 'app' => string 'dasa' (length=3)
  public 'inner_app' => string 'asda' (length=3)
  public 'fund_source_name' => string '理财' (length=12)
  public 'fund_loan_order_info' => 
    array (size=1)
      0 => 
        object(stdClass)[18]
          public 'id' => int 262
          public 'order_number' => string '123' (length=23)
          public 'loan_apply_code' => string '3123' (length=19)
          public 'status_history' => string '0,5,6,7' (length=7)

当然这是一个栗子,所以数据是对不上的,目的是看看什么对象。

第二个参数是true的情况,返回的就是正常的数组了,就不贴上了。

posted @ 2019-07-11 15:28  谦逊的铅笔  阅读(2150)  评论(0编辑  收藏  举报