array2json() - Convert PHP arrays to JSON
2014-04-04 14:45
351 查看
array2json is a PHP function that will convert the array given as its argument into a JSON string. The created JSON string will be returned. This is very useful in Ajax apps using JSON over XML. If you are using XML, you better off using my xml2array() JavaScript function.
Note: This is an old function - if you use a new version of PHP(5.2 or newer) you will get the json_encode() function. That can be used to convert arrays to a JSON string.
Provide this array as the argument of the array2json() function...
The resulting string will be(actual output - the source says
I am formatting the output for better readability...
String
Numbers
Boolean(true/false)
Numerical Array
Associative Array
Objects are not handled for obvious reasons.
Note: This is an old function - if you use a new version of PHP(5.2 or newer) you will get the json_encode() function. That can be used to convert arrays to a JSON string.
Usage
First you need a PHP array. For example...$data = array( 'success' => "Sweet", 'failure' => false, 'array' => array(), 'numbers' => array(1,2,3), 'info' => array( 'name' => 'Binny', 'site' => 'http://www.openjs.com/' ) );
Provide this array as the argument of the array2json() function...
$json = array2json($data);
The resulting string will be(actual output - the source says
print array2json($data);)...
{"success":"Sweet","failure":false,"empty_array":[],"numbers":[1,2,3],"info":{"name":"Binny","site":"http:\/\/www.openjs.com\/"}}
I am formatting the output for better readability...
{ "success":"Sweet", "failure":false, "empty_array":{}, "numbers":[1,2,3], "info":{ "name":"Binny", "site":"http://www.openjs.com/" } }
Handled Data types
All the basic data types are handled...String
Numbers
Boolean(true/false)
Numerical Array
Associative Array
Objects are not handled for obvious reasons.
Code
<?php function array2json($arr) { if(function_exists('json_encode')) return json_encode($arr); //Lastest versions of PHP already has this functionality. $parts = array(); $is_list = false; //Find out if the given array is a numerical array $keys = array_keys($arr); $max_length = count($arr)-1; if(($keys[0] == 0) and ($keys[$max_length] == $max_length)) {//See if the first key is 0 and last key is length - 1 $is_list = true; for($i=0; $i<count($keys); $i++) { //See if each key correspondes to its position if($i != $keys[$i]) { //A key fails at position check. $is_list = false; //It is an associative array. break; } } } foreach($arr as $key=>$value) { if(is_array($value)) { //Custom handling for arrays if($is_list) $parts[] = array2json($value); /* :RECURSION: */ else $parts[] = '"' . $key . '":' . array2json($value); /* :RECURSION: */ } else { $str = ''; if(!$is_list) $str = '"' . $key . '":'; //Custom handling for multiple data types if(is_numeric($value)) $str .= $value; //Numbers elseif($value === false) $str .= 'false'; //The booleans elseif($value === true) $str .= 'true'; else $str .= '"' . addslashes($value) . '"'; //All other things // :TODO: Is there any more datatype we should be in the lookout for? (Object?) $parts[] = $str; } } $json = implode(',',$parts); if($is_list) return '[' . $json . ']';//Return numerical JSON return '{' . $json . '}';//Return associative JSON }
相关文章推荐
- Windows Server 2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建
- PHP-将某一目录下文件压缩成zip格式
- PHP自动分表程序
- WinCacheGrind配合XDebug分析PHP程序性能
- php数组
- php之curl
- PHP之输出"hello World"
- redhat 5.9下开启ftp服务
- php条件语句(2)switch...case语句
- PHP编程——我的第一个框架(初步设计)
- php 图片式报表 我百度云盘有资料
- rtp h264注意点(FU-A分包方式说明)
- PHP加载APC模块
- PHP乱码问题,UTF-8乱码常见问题小结
- php 做图像报表
- PHP学习记录----策略模式
- Yii 中使用CURL扩展
- Yii防止sql注入、xxs方法
- 关于Ecshop pages.lbi.php Xss漏洞的修复
- PHP四舍五入精确小数位及取整