php把數組儲存資料庫程式碼

來源:互聯網
上載者:User

方法一:

用serialize寫入,再用unserialize輸出

serialize()就是將PHP中的變數如對象(object),數組(array)等等的值序列化為字串後儲存起來.序列化的字串我們可以 儲存在其他地方如資料庫、Session、Cookie等,序列化的操作並不會丟失這些值的類型和結構。這樣這些變數的資料就可以在PHP頁面、甚至是不 同PHP程式間傳遞了。
而unserialize()就是把序列化的字串轉換回PHP的值。返回的是轉換之後的值,可為 integer、float、string、array 或 object如果傳遞的字串不可解序列化,則返回 FALSE

 代碼如下 複製代碼

class db {
 private $host;
 private $user;
 private $pwd;
 private $dbname;
 private $Mysqli;
 function __construct($host, $user, $pwd, $dbname) {
  $this->host = $host;
  $this->user = $user;
  $this->pwd = $pwd;
  $this->dbname = $dbname;
  $this->db();
 }
 function db() {
  $this->mysqli = new mysqli ( $this->host, $this->user, $this->pwd, $this->dbname );
 }
 function select() {
  $this->mysqli->query("SET CHARSET GBK");
  $sql = "SELECT id,cname FROM hdw_channel";
  $result = $this->mysqli
   ->query ( $sql );
  $rows = array ();
  while ( $row = $result->fetch_assoc () ) {
   $rows [] = $row;
  }
  ECHO "<PRE>";
  print_r ( $rows );
 }
 function __wakeup(){   //還原序列化,
  $this->db();
 }
}
$chanel = new db("localhost",'root','','hdcms');
//$chanel->select();
session_start();
$_SESSION['channel_obj'] = serialize($chanel);   //將對象序列化,儲存的是對象的屬性,沒有方法,所以要用__wakeup()


class ren{
 private $name;
 private $age;
 function __construct($name,$age){
  $this->name =$name;
  $this->age = $age;
 }
 function show(){
  echo "姓名是:{$this->name}  年齡是:{$this->age}";
 }
 function __sleep(){
  return array_keys(get_object_vars($this));  //或得數組裡邊的鍵名,序列化某些變數
 }
}
$zao = new ren("趙六",44);
echo serialize($zao);       //序列化(指定哪個變數序列化)

====================================
 
session_start();
include '59.php';
$channel_obj=unserialize($_SESSION['channel_obj']);  //還原序列化類對象
$channel_obj->select();  //有了__wakeup方法才可以起作用

方法二:

用json_encode寫入,再用json_decode輸出

json_encode之前,把所有數組內所有內容都用urlencode()處理一下,然用json_encode()轉換成json字串,最後再用urldecode()將編碼過的中文轉回來。

 代碼如下 複製代碼

<?php
/**************************************************************
 *
 * 使用特定function對數組中所有元素做處理
 * @param string &$array  要處理的字串
 * @param string $function 要執行的函數
 * @return boolean $apply_to_keys_also  是否也應用到key上
 * @access public
 *
 *************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
    static $recursive_counter = 0;
    if (++$recursive_counter > 1000) {
        die('possible deep recursion attack');
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }
 
        if ($apply_to_keys_also && is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
    $recursive_counter--;
}
 
/**************************************************************
 *
 * 將數群組轉換為JSON字串(相容中文)
 * @param array $array  要轉換的數組
 * @return string  轉換得到的json字串
 * @access public
 *
 *************************************************************/
function JSON($array) {
 arrayRecursive($array, 'urlencode', true);
 $json = json_encode($array);
 return urldecode($json);
}

$array = array
       (
          'Name'=>'希亞',
          'Age'=>20
       );


echo JSON($array);
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.