1.json_decode()
json_decode — 对 JSON 格式的字符串进行编码
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 |