1.json_decode()

json_decode — 对 JSON 格式的字符串进行编码 
       说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 
 
       参数
json
待解码的 json string 格式的字符串。
assoc
当该参数为 TRUE 时,将返回 array 而非 object 。 

json_decode($data)输出的是对象,而json_decode("$arr",true)是把它强制生成PHP关联数组.

2.json_encode() 
string json_encode ( mixed $value [, int $options = 0 ] ) 
该函数只能接受 UTF-8 编码的数据

options 
由以下常量组成的二进制掩码: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE. 

 <?php
$a = array('<foo>',"'bar'",'"baz"','&blong&', "\xc3\xa9"); echo "Normal: ", json_encode($a), "\n"; //Normal: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"]
echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n";//Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n";//Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n";//Quot: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n";//Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";//Unicode: ["<foo>","'bar'","\"baz\"","&blong&","é"]
echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";// All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"] $b = array(); echo "Empty array output as array: ", json_encode($b), "\n";//Empty array output as array: []
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";//Empty array output as object: {} $c = array(array(1,2,3)); echo "Non-associative array output as array: ", json_encode($c), "\n";//Non-associative array output as array: [[1,2,3]]
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";//Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}} $d = array('foo' => 'bar', 'baz' => 'long'); echo "Associative array always output as object: ", json_encode($d), "\n";//Associative array always output as object: {"foo":"bar","baz":"long"}
echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";//Associative array always output as object: {"foo":"bar","baz":"long"}
?>
可以看出json_encode()和json_decode()是编译和反编译过程,注意json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。
 
3.php array_key_exists和isset区别:
php array_key_exists用于检查某个键名是否存在于数组中,而isset也可以用于检测数组中某个键名是否存在,那么二者有什么区别?
 一个基本的区别是isset()可用于数组和变量,而array_key_exits()只能用于数组。

array_key_exists()

array_key_exists() 会检查键值的存在. 这个函数会返回TRUE,只要键值存在,即使值为NULL.

1
2
3
4
$arr array"one"=>"1""two"=>"2""three"=>null );
array_key_exists("one"$arr); // true
array_key_exists("two"$arr); // true
array_key_exists("three"$arr); // true

 isset()

和arrry_key_exitst()不同,isset()会同时检查键和值,只有当健存在,对应的变量不为NUll的时候才会返回TURE

1
2
3
4
5
$arr array"one"=>"1""two"=>"2""three"=>null );
isset($arr["one"]); // true
isset($arr["two"]); // true
isset($arr["three"]); // false

json_encode和json_decode和isset和array_key_exists的更多相关文章

  1. ecshop类的解析2 json_encode和json_decode的具体实现

    在看ecshop源码时,看到json这个类,研究了一下,它是为了兼容低版本php而做出的类,是对php的数据和json转换时使用的. encode和decode函数是对json的操作,对应json_e ...

  2. php中的json_encode()和json_decode()函数的一些说明

    一,json语法( php中的json_decode($json)中的$json要符合json语法格式 ) ① JSON可以表示三种类型的值 1,简单值.包括整型,字符串型,布尔值和null.例如:5 ...

  3. php json_encode()和json_decode()

    json_encode()和json_decode()分别是编译和反编译过程 注意json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者nu ...

  4. 判断数组中有没有某个键 isset 和 array_key_exists 的效率比较

    判断数组中有没有某个键 isset 和 array_key_exists 谁的效率高呢? 使用 array_key_exists 代码如下 结果如下 如果使用 isset 代码如下 结果如下: 很明显 ...

  5. PHP数组和Json之间的互相转换 json_encode() 和 json_decode()

    之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互.因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象.Json很好的解决了这个问题. Json简介 JS ...

  6. PHP isset 和 array_key_exists 对比

    经常使用 isset 判断变量或数组中的键是否存在,但是数组中可以使用 array_key_exists 这个函数,那么这两个 哪一个更优呢? 官方文档这样定义两者: isset:语言构造器,用于检测 ...

  7. PHP中测试in_array、isset、array_key_exists性能

    测试in_array.isset.array_key_exists性能.自己写的简易测试代码: ini_set('display_errors',true); error_reporting(E_AL ...

  8. PHP判断键值数组是否存在,使用empty或isset或array_key_exists(转)

    一个例子 猜猜看,下面的例子会输出什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $a = array('a'=>1, 'b'=>0, 'c'= ...

  9. PHP开发笔记(二)PHP的json_encode和json_decode问题

    解决PHP的json_encode问题之前,先了解一下PHP预定义常量http://php.net/manual/zh/json.constants.php. 用PHP的json_encode来处理中 ...

随机推荐

  1. 《Drools7.0.0.Final规则引擎教程》第4章 4.2 lock-on-active

    lock-on-active 当在规则上使用ruleflow-group属性或agenda-group属性的时候,将lock-on-active 属性的值设置为true,可避免因某些Fact对象被修改 ...

  2. android安装apk

     * 安装apk */ private void installApk() { // 获取当前sdcard存储路径 File apkfile = new File(Environment.getE ...

  3. window如何分区

    WD官方技术支持电话:800热线800-820-6682(请于周一至周五工作日期间使用固定电话拨打,不支持手机用户)手机用户请拨打400-627 6682. 链接:https://kuyusm.tma ...

  4. 5款实用的硬盘、SSD固态硬盘、U盘、储存卡磁盘性能测试工具绿色版

    http://www.iplaysoft.com/disk-benchmark-tools.html/comment-page-1#comment-149425

  5. 大容量txt数据导入SQL Server助攻记

    小伙伴们有个数据竞赛,提供的数据是944MB大小的TXT数据文档,导入SQL遇到一些麻烦.于是帮着解决,顺便也熟练了SQL Server的一些操作----- 打开如此大的txt需要的时间很长,而且不全 ...

  6. IQ/OQ/DQ/PQ

    Installation Qualification (IQ) 安装验证,安装时在用户处进行.它提供文件证明用户安装环境所有的规格及参数完全符合制造商的描述和安全 要求. Operation Qual ...

  7. CSS命名规范参考及书写注意事项

    CSS书写顺序 *{ /*显示属性*/ display position float clear cursor … /*盒模型*/ margin padding width height /*排版*/ ...

  8. ACM学习历程—51NOD 1685 第K大区间2(二分 && 树状数组 && 中位数)

    http://www.51nod.com/contest/problem.html#!problemId=1685 这是这次BSG白山极客挑战赛的E题. 这题可以二分答案t. 关键在于,对于一个t,如 ...

  9. ACM学习历程—51NOD 1412 AVL树的种类(递推)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1770 这是这次BSG白山极客挑战赛的B题.设p(i, j)表示节点个数为 ...

  10. Kernel,Shell,Bash 的关系

    Kernel (内核) Kernel 操作系统内核 操作系统内核是指大多数操作系统的核心部分.它由操作系统中用于管理存储器.文件.外设和系统资源的那些部分组成.操作系统内核通常运行进程,并提供进程间的 ...