标签搜索

考勤记录字符处理

wehg489
2023-03-17 / 0 评论 / 12 阅读 / 正在检测是否收录...
{"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

评论 (0)

取消
歌曲封面
0:00