json_encode和json_decode和isset和array_key_exists

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. 
 1 <?php
 2 $a = array('<foo>',"'bar'",'"baz"','&blong&', "xc3xa9");
 3  
 4 echo "Normal: ", json_encode($a), "
"; //Normal: ["<foo>","'bar'",""baz"","&blong&","u00e9"]
 5 echo "Tags: ", json_encode($a, JSON_HEX_TAG), "
";//Tags: ["u003Cfoou003E","'bar'",""baz"","&blong&","u00e9"]
 6 echo "Apos: ", json_encode($a, JSON_HEX_APOS), "
";//Apos: ["<foo>","u0027baru0027",""baz"","&blong&","u00e9"]
 7 echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "
";//Quot: ["<foo>","'bar'","u0022bazu0022","&blong&","u00e9"]
 8 echo "Amp: ", json_encode($a, JSON_HEX_AMP), "
";//Amp: ["<foo>","'bar'",""baz"","u0026blongu0026","u00e9"]
 9 echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "
";//Unicode: ["<foo>","'bar'",""baz"","&blong&","é"]
10 echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "

";// All: ["u003Cfoou003E","u0027baru0027","u0022bazu0022","u0026blongu0026","é"]
11  
12 $b = array();
13  
14 echo "Empty array output as array: ", json_encode($b), "
";//Empty array output as array: []
15 echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "

";//Empty array output as object: {}
16  
17 $c = array(array(1,2,3));
18  
19 echo "Non-associative array output as array: ", json_encode($c), "
";//Non-associative array output as array: [[1,2,3]]
20 echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "

";//Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}}
21  
22 $d = array('foo' => 'bar', 'baz' => 'long');
23  
24 echo "Associative array always output as object: ", json_encode($d), "
";//Associative array always output as object: {"foo":"bar","baz":"long"}
25 echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "

";//Associative array always output as object: {"foo":"bar","baz":"long"}
26 ?>
可以看出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
原文地址:https://www.cnblogs.com/redfire/p/7701971.html