我们平时在写日志时会使用数组格式化输出为数组形式的字符串,这样浏览起来非常直观,但在有些情况下,我们需要将数组字符串进行还原,今天在网上查了很多资料后并不能完美进行还原,我就自己尝试多次后,写了一个方法专门进入处理数组字符串还原为数组。
打印在日志中原数组格式如图:
我在测试时用postman,选用post试提交数组字符串数据,数据类型选择了raw,如下图
我封装的处理数据的方法:
/** * 将print_r打印出的数组字符串还原为数组 * @desc: 函数用途描述信息 * @author: Sindsun * @email: admin@sindsun.com * @date: 2020年5月20日 下午2:39:12 * @param: $arrayText 由print_r输出的数组字符串 * @return array */ public function restorePrintrTextToArray($arrayText){ if(!is_string($arrayText)){ return []; } $arrayText = str_replace('[', '\'', $arrayText); $arrayText = str_replace(']', '\'', $arrayText); $input = explode("\n", $arrayText); foreach ($input as $k=>$v){ if(empty($v) || strpos($v, 'Array')!==false || strpos($v, '(')!==false || strpos($v, ')')!==false){ continue; } $tmpValArr = explode('=>', $v); if(count($tmpValArr) == 2){ $input[$k] = $tmpValArr[0] . '=> \'' .trim($tmpValArr[1]) . '\','; } } $input = implode("\n", $input); $input = str_replace(')', '),', $input); $input = str_replace('Array', 'array', $input); $input = substr($input, 0, strlen($input)-1); eval("\$input=".$input.";"); return $input; }
接收数据,测试
header("Content-Type: application/json; charset=utf-8"); $recvData = file_get_contents('php://input'); var_dump(is_array($recvData)); echo PHP_EOL; $recvData = $this->restorePrintrTextToArray($recvData); var_dump(is_array($recvData)); echo PHP_EOL; print_r($recvData); die;
查看结果
版权声明:
此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[狂码一生]
https://www.sindsun.com/articles/8/130
[若此文确切存在侵权,请联系本站管理员进行删除!]
--THE END--