在php编程中,数组是一种重要的数据结构。而json也是一种流行的数据格式,被广泛应用于各种web应用程序中。在php中,我们经常需要将数组转换成json格式,以便于传输和存储。php提供了json_encode()方法,可以将数组转换成json字符串。但是,有时候我们可能需要自己编写一个数组转json的方法,以便更好地控制输出格式和逻辑。下面是一个示例方法实现:
/**
* 将数组转换成JSON字符串
* @param array $data 待转换的数组
* @param int $indent 缩进量
* @param int $level 当前层级
* @return string 转换后的JSON字符串
*/
function arrayToJson($data, $indent = 0, $level = 0)
{
$result = "";
$space = str_repeat(" ", $indent);
$isAssoc = is_assoc($data);
if ($isAssoc) {
$result .= "{\n";
} else {
$result .= "[\n";
}
foreach ($data as $key => $value) {
if ($isAssoc) {
$result .= $space . json_encode($key) . ": ";
}
if (is_array($value)) {
$result .= arrayToJson($value, $indent + 4, $level + 1);
} else if (is_bool($value)) {
$result .= json_encode($value ? "true" : "false");
} else if (is_null($value)) {
$result .= "null";
} else if (is_numeric($value)) {
$result .= json_encode($value);
} else {
$result .= json_encode($value, JSON_UNESCAPED_UNICODE);
}
if (next($data)) {
$result .= ",";
}
$result .= "\n";
}
$result .= str_repeat(" ", $level * 4);
if ($isAssoc) {
$result .= "}";
} else {
$result .= "]";
}
return $result;
}
/**
* 判断一个数组是否是关联数组
* @param array $data 待判断的数组
* @return bool
*/
function is_assoc($data)
{
if (!is_array($data)) {
return false;
}
$keys = array_keys($data);
$len = count($keys);
for ($i = 0; $i < $len; $i++) {
if ($keys[$i] !== $i) {
return true;
}
}
return false;
}这个方法接受一个数组作为参数,以及一个“缩进量”参数和一个“当前层级”参数,这两个参数用于格式化输出。其中,is_assoc()方法用于判断一个数组是否是关联数组。如果是,我们在输出时需要同时输出数组元素的键和值。而对于值的类型,我们采取不同的编码方法:
此外,我们需要在每个子项的末尾输出一个逗号,以便支持多个牵连元素的序列化。最后,我们根据数组的类型输出相应的“结束符号”,并返回格式化后的JSON字符串。
使用上述代码,我们可以将一个PHP数组转换为JSON字符串,如下所示:
$data = array(
'name' => 'John',
'age' => 28,
'married' => true,
'hobbies' => array('basketball', 'music', 'reading'),
'address' => array(
'city' => 'Beijing',
'country' => 'China'
),
'friends' => array(
array('name' => 'Tom', 'age' => 27),
array('name' => 'Jane', 'age' => 26)
)
);
echo arrayToJson($data);结果输出如下:
以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。
482
立即学习“PHP免费学习笔记(深入)”;
{
"name": "John",
"age": 28,
"married": true,
"hobbies": [
"basketball",
"music",
"reading"
],
"address": {
"city": "Beijing",
"country": "China"
},
"friends": [
{
"name": "Tom",
"age": 27
},
{
"name": "Jane",
"age": 26
}
]
}在实际开发中,我们可能需要按照特定的格式要求输出JSON字符串。此时,自定义数组转JSON方法就变得非常有价值。
以上就是php怎么编写一个数组转JSON的方法的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号