{"id":"1","nbbh":"丽媛","name":"行政班组","kqid":"01246201442834995039","kq":"[null,null,null,\"08:24 \n20:33 \",\"08:29 \n20:31 \n20:32 \",\"08:16 \n20:35 \",\"08:25 \n17:41 \",null,\"08:24 \n20:32 \",\"08:27 \n20:32 \",\"08:26 \n20:32 \",\"08:26 \n20:31 \",\"08:22 \n08:23 \n18:30 \",\"08:18 \n19:31 \",null,\"08:23 \n20:30 \",\"08:15 \n20:30 \",\"08:16 \n21:01 \",\"08:32 \n20:30 \",\"08:23 \n20:30 \",\"08:23 \n19:06 \",null,\"08:18 \n20:32 \",\"08:21 \n20:33 \",\"08:23 \n20:33 \",\"08:28 \n20:30 \",\"08:24 \n20:30 \",null,\"08:20 \n18:32 \",\"08:27 \n20:31 \",\"08:27 \n20:31 \",null,null]"},{"id":"2","nbbh":"修财","name":"行政班组","kqid":"303766076326380085","kq":"[null,null,null,\"07:42 \n17:35 \",\"08:01 \n08:02 \n17:48 \",\"07:58 \n17:50 \",\"07:54 \n20:01 \",null,\"07:49 \",\"07:56 \n18:40 \",\"08:06 \n17:51 \",\"07:40 \n17:35 \",\"07:36 \n16:00 \",\"07:47 \n17:51 \",null,\"08:08 \n17:57 \",\"07:33 \n17:39 \",\"07:41 \n18:48 \",\"07:42 \n17:50 \",\"07:32 \n20:17 \",\"07:57 \n18:45 \",null,\"07:40 \n17:41 \",\"07:37 \n17:53 \",\"07:45 \n17:38 \",\"07:39 \n17:33 \",\"07:54 \n17:34 \",\"08:08 \n17:33 \",\"08:03 \",\"07:54 \n20:03 \",\"07:36 \",null,null]"},
需要将这样的字符串改造完全由键值对构造的,这样方便在前端进行调用,将字符简化一下
{
{"id":"1","nbbh":"丽媛","name":"行政班组","kqid":"01246201442834995039","kq":"[null,null,null,\"08:24 \n20:33 \",]"},
{"id":"2","nbbh":"修财","name":"行政班组","kqid":"303766076326380085","kq":"[\"07:42 \n17:35 \",\"08:01 \n08:02 \n17:48 \",]"}
}
处理逻辑
1.首先将 JSON 格式的字符串解析为 PHP 数组,使用 json_decode() 函数,并设置第二个参数为 true,以便将 JSON 对象转换为 PHP 关联数组。
2.定义一个空字符串 $result,用于存储拼接后的键值对字符串。
3.遍历数组中的每个元素(即每个 JSON 对象),使用 foreach 循环遍历每个元素的键和值。
4.对于每个键值对,将键和值用双引号括起来,中间使用冒号连接,并在末尾加上一个逗号,将其拼接到 $result 字符串的末尾。
5.最后使用 rtrim() 函数去除 $result 字符串末尾的逗号,然后将其用花括号括起来,即可得到最终的键值对字符串。
或者
$input_str = '[{"id":"1","nbbh":"丽媛","name":"行政班组","kqid":"01246201442834995039","kq":["null","null","null","08:24 \n20:33 "]}, {"id":"2","nbbh":"修财","name":"行政班组","kqid":"303766076326380085","kq":["07:42 \n17:35 ","08:01 \n08:02 \n17:48 "]}]';
$data = json_decode($input_str, true);
foreach ($data as &$item) {
$kq_dict = array();
foreach ($item['kq'] as $index => $value) {
$kq_dict[$index] = ($value == 'null') ? 'null' : $value;
}
unset($item['kq']);
$item = array_merge($item, $kq_dict);
}
$output_str = json_encode($data, JSON_UNESCAPED_UNICODE);
echo $output_str;
使用了一个内部循环来将 kq 的值转换为字典格式。具体来说,使用了一个空的数组 $kq_dict,并在循环中遍历 kq 的值,并将它们添加到 $kq_dict 中。在添加时,我们将值为 'null' 的元素转换为 null,并使用循环变量 $index 作为字典的键。最后,使用 array_merge() 函数将 $kq_dict 添加到 $item 中,并删除了 $item 的 kq 键
在 PHP 中,使用 foreach 循环时需要将被遍历的数组或对象赋值给一个变量,而不能直接传入引用参数。因此,将 &$item 改为 $item 即可解决参数错误的问题
评论 (0)