在保险产品投保流程的开发过程中,遇到了如下问题:
1,投保模板的结构是多维的结构;
2,投保模板给出的字段是A(特殊字段),但是在投保时传递到后台的字段要求是B。
问题思考:
step1
要对特殊字段做映射关系;
列如: 'ADDRESS_3_province' => 'province', //省份 'ADDRESS_3_city' => 'city', //城市 'ADDRESS_3_district' => 'district', //区域
step2
数组转变成键值一维数组
/** * 数组转变成键值一维数组 * * @param array $arr 数组 * @param string $arr_key 数组键 * @param string $split 分割符 * @param array $linear_arr 键值一维数组 * * @return array */ function array_to_linear_array($arr = array(), $arr_key = "", $split = "_", &$linear_arr = array()) { foreach ($arr as $key => $val) { if (is_array($val)) { $str_key = ""; if ($arr_key) { $str_key = $arr_key . $split; } $str_key .= $key; array_to_linear_array($val, $str_key, $split, $linear_arr); } else { if ($arr_key) { $linear_arr[$arr_key . $split . $key] = $val; } else { $linear_arr[$key] = $val; } } } }
代码结构及结果
$arr = array( 'NAME' => 'bing', 'CERTIFICATENO' => '19880102167548', 'PHONE' => array( '2' => '13714375950', '3' => '0755-2686590' ), 'ADDRESS' => array( '3' => array( 'province' => '110000', 'city' => '110100', 'district' => '110101' ) ), 'EMAIL' => '[email protected]' ); $linear_arr = array(); array_to_linear_array($arr, "", "_", $linear_arr); print_r($linear_arr);
打印结果:
Array ( [NAME] => bing [CERTIFICATENO] => 19880102167548 [PHONE_2] => 13714375950 [PHONE_3] => 0755-2686590 [ADDRESS_3_province] => 110000 [ADDRESS_3_city] => 110100 [ADDRESS_3_district] => 110101 [EMAIL] => [email protected] )