在保险产品投保流程的开发过程中,遇到了如下问题:
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]
)