我們從數據庫查詢出來的數據一般為數組的形式,而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的情況,返回的就是正常的數組了,就不貼上了。