/**
* 功能:把数组的key和value翻译成中文,也可以只翻译key或者只翻译value,也可以隐藏部分字段不输出。
* @param array $arr ['name'=>'tom','user_id'=>1,'mobile'=>15912345678]
* @param array $map ['name'=>'姓名','user_id'=>'用户id','delete--mobile']
* @param $type 默认0替换key和value,等于1替换key,等于2替换value
*
* @return array
*/
function array_translate(array $arr, array $map, $type = 0)
{
if (!is_array($arr)) {
return $arr;
}
$tempArray = array();
foreach ($arr as $key => $value) {
// 处理数组的键,翻译成中文
$key_before = $key;
$key = (in_array($type, [0, 1]) && array_key_exists((string)$key, $map)) ? $map[$key] : $key;
if (is_array($value)) {
$value = array_translate($value, $map);
} else {
//处理数组的value,翻译成中文
$value = (in_array($type, [0, 2]) && array_key_exists((string)$value, $map)) ? $map[$value] : $value;
//特殊值处理
$kk = $key_before . '#' . $value;
if (array_key_exists($kk, $map)) {
$value = $map[$kk];
}
}
//删除不显示的选项
if (!array_key_exists('delete--' . $key, $map)) {
$tempArray[$key] = $value;
}
}
return $tempArray;
}
测试一下:
$arr = ['name'=>'tom','user_id'=>1,'mobile'=>15912345678,'hobby'=>'football'];
$map = ['name'=>'姓名','user_id'=>'用户id','delete--mobile'=>1,'hobby'=>'爱好','football'=>'足球'];
$res = DP_array_translate($arr,$map);
print_r($res);
返回值:
Array
(
[姓名] => tom
[用户id] => 1
[爱好] => 足球
)