• 技术文章 >后端开发 >php教程

    PHP6 先修班 JSON实例代码_PHP

    2016-06-01 12:24:46原创498
    JSON

    它是基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集
    JSON 主要利用了成對的 {} 來包住各個object(物件),用成對的 [] 來包各個array(陣列),
    用成對的 "" 來包住各字串,用逗號來區隔各變數而資料型態有 string, number, array, object

    下面簡單的JSON格式,敘述了一個 object json 擁有一個成員變數,這個成員變數中有含有三個物件

    复制内容到剪贴板代码:
    var json = {
    'query' : [
    {'id':'1','type':'a','title':'PHP 5.2.0 的新功能 JSON decoder & encoder'},
    {'id':'2','type':'b','title':'JSON 全稱 JavaScript Object Notation'},
    {'array': ['A', 'B','C', 'D', 'E']}
    ]
    };
    如此,我們可以獲得一個叫做 json 的Object,而這個json Object中包含一個獨立的成員 query
    而query包含一個Array ,這個Array中又含了三個Object,前面二個Object含有三個成員
    id,type,title,而最後一個Object array 包含一個陣列,如此解釋還明白吧?

    但是要怎麼用呢?
    很簡單
    alert('I have ' +json.query.length + ' object.');
    //alert I have 3 object.
    alert('type='+json.query[1].type+'\r\ntitle'+json.query[1].title);
    //alert type=b title=JSON 全稱 JavaScript Object Notation
    alert('陣列索引3='+json.query[2].array[3]);
    //alert 陣列索引3=D

    這樣操作資料時更簡便,不需要和複雜的DOM打交道,所需要的資料可以很輕鬆的取得
    例如上面的例子 json.query[ i ].title 如此就可以取得第i筆的title內含的值
    PHP的發展是很迅速,當程式界對JSON還一知半解時或者全然不知何為JSON時
    PHP已經在最新的版本5.2.0中納入核心,並且預設狀態是啟用,相較於其他的Script語言
    PHP可謂一馬當先,在5.2.0版本中為JSON實作了兩個函數 json_decode() 和 json_encode()
    前者是將JSON格式的字串還原成PHP原生的陣列
    後者則是將PHP原生陣列編譯成JSON格式的字串
    不過,由於Javascript支援Unicode,如果在存取資料庫時使用非Ascii的字元,如中、日、韓
    需要將字元編碼轉換成UTF8,不然經過json_encode()後的字串會是亂碼
    ========================================================
    經過上一篇簡單介紹JOSN後
    本篇就來實作如何使用JOSN
    下面範例使用需要使用MySQL4.1以上版本
    編碼全程採用utf8
    承接上一篇的資料格式,表中共有三個欄位id,type,title
    資料表規格如下
    复制内容到剪贴板代码:
    CREATE TABLE `news` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `type` varchar(255) NOT NULL default '',
    `title` varchar(64) NOT NULL default '',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
    复制内容到剪贴板代码:
    //建立連線
    $conn = mysqli_connect("localhost", 'root', '')or die('連不上資料庫');
    //選擇資料庫
    mysqli_select_db($conn,'mydata') or die('不能選資料庫');
    //設定連線編碼規則,不懂上google找
    mysqli_query($conn,'SET NAMES 'utf8'');
    //取出資料
    $results = mysqli_query($conn,'SELECT id,type,title FROM news');
    //Josn字串
    $json = '';
    //因為是範例,所以自行控制迴圈
    $i=0;
    while($row = mysqli_fetch_assoc($results))
    {
    $i++;
    $json .= json_encode($row);
    //資料表中只放三筆資料,所以在第三筆時不需要在尾巴加上 ",",記得,最後一筆資料不用加上","
    if ($i<3)
    {
    $json .= ",";
    }

    }
    //將資料包進陣列中
    $json = '{"query":[ '.$json.']}';?>



    Json範例








    還原Json

    //將字串解碼
    $s_JSON_Decoded = json_decode($json,true);
    //取回資料
    foreach ($s_JSON_Decoded as $row)
    {
    foreach ($row as $rowa)
    {
    echo $rowa['title']."
    ";
    }

    }
    ?>


    經過簡單的演練後
    相信大家對JSON這玩意有更深一層的瞭解
    當然JSON的應用不只是範例中那麼簡單
    有興趣一起研究吧
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP6 json
    上一篇:PHP define函数的使用说明_PHP 下一篇:常用的php对象类型判断_PHP
    千万级数据并发解决方案

    相关文章推荐

    • 实例详解怎么用PHP实现简易的MVC框架• phpize编译出错,该怎么处理• Eclipse 中 PHP Editor 联系关系 CakePHP *ctp 文件• PHP fsockopen/curl怎么获取目标转向后的页面代码有关问题• php基础之位演算
    1/1

    PHP中文网