1、json字符串和数组之间的转换
json_decode($jsonStr) json字符串解码为php变量,若第二个参数默认为false,返回一个对象;若第二个参数设置true,则返回一个数组
json_encode($arr) 将php数组编码为json字符串
json_encode($arr, JSON_UNESCAPED_UNICODE) 将php数组中的中文正常编码为json字符串
//$jsonStr中的key和value必须被双引号包裹,否则返回null $jsonStr = '{"name":"张三", "age":"15", "addr":"北京"}'; $obj = json_decode($jsonStr); $arr = json_decode($jsonStr, true); var_dump_br($obj); var_dump_br($arr); $jsonStr = json_encode($arr); var_dump_br($jsonStr);
打印结果
object(stdClass)#1 (3) { ["name"]=> string(6) "张三" ["age"]=> string(2) "15" ["addr"]=> string(6) "北京" } array(3) { ["name"]=> string(6) "张三" ["age"]=> string(2) "15" ["addr"]=> string(6) "北京" } string(56) "{"name":"u5f20u4e09","age":"15","addr":"u5317u4eac"}"
2、数组操作的基本函数
array_values($arr) 返回数组内所有的value,返回类型是数组
array_keys($arr) 返回数组内所有的key,返回类型是数组
array_flip($arr) 数组中的值与键名互换(如果有重复,后者覆盖前者)
in_array($val, $arr) 判断value(可以是数组类型)是否存在于数组中
array_key_exists($key, $arr) 判断key是否存在数组中(更重要的是,它对对象也有用)
array_search($val, $arr) 返回value在数组中对应的key
1 $xiaocheng = array("name"=>"小程", "job"=>"php工程师"); 2 $arr = array("person"=> $xiaocheng, "company"=>"xxx信息技术有限公司"); 3 4 $arrValues = array_values($arr);//所有value 5 $arrKeys = array_keys($arr); //所有key 6 var_dump_br($arrValues); 7 var_dump_br($arrKeys); 8 9 $new_arr = array_flip($arr); //key和value互换,只能互换string和integer的值。 10 var_dump_br($new_arr); 11 $new_xiao_cheng = array_flip($xiaocheng); 12 var_dump_br($new_xiao_cheng); 13 14 15 $exist_value = in_array($xiaocheng, $arr); //判断value是否存在数组中 16 var_dump_br($exist_value); 17 $exist_value = in_array("php工程师", $arr); //不能深层次判断 18 var_dump_br($exist_value); 19 20 $exist_key = array_key_exists("person", $arr); //判断key是否存在数组中 21 var_dump_br($exist_key); 22 23 $key = array_search($xiaocheng, $arr); //返回value在数组中的key 24 var_dump_br($key);
打印结果
1 array(2) { [0]=> array(2) { ["name"]=> string(6) "小程" ["job"]=> string(12) "php工程师" } [1]=> string(27) "xxx信息技术有限公司" } 2 array(2) { [0]=> string(6) "person" [1]=> string(7) "company" } 3 4 Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! in D:appphpstudy2014WWW est estArray.php on line 26 5 array(1) { ["xxx信息技术有限公司"]=> string(7) "company" } 6 array(2) { ["小程"]=> string(4) "name" ["php工程师"]=> string(3) "job" } 7 bool(true) 8 bool(false) 9 bool(true) 10 string(6) "person"
向数组中添加元素
array_push($arr, $var) 在数组末尾添加,还可以直接 $arr[] = $var;
array_unshift($arr, $var) 在数组开头添加
从数组中取出元素
array_pop($arr) 从数组末尾取出并删除
array_shift($arr) 从数组开头取出并删除
3、数组排序
sort($arr, [$flag]) 数组元素从低到高排列
rsort($arr, [$flag]) 数组元素从高到低排列
4、数组间的函数
数组的差集(上图绿色部分或灰色部分)
array_diff($arr1,$arr2); 返回差集结果数组(注:如果参数$arr2在前,那么就表示灰色部分;$arr1在前就表示绿色部分)
array_diff_assoc($arr1,$arr2,$arr3); 返回差集结果数组,键名也做比较
数组的交集(上图红色部分)
array_intersect($arr1,$arr2);返回交集结果数组
array_intersect_assoc($arr1,$arr2);返回交集结果数组,键名也做比较
数组的合集(上图绿色+红色+灰色)
array_merge($arr1, $arr2)
更多php数组的介绍,请看 http://www.cnblogs.com/lhat/p/5882431.html