美文网首页
改变数组中的固定字段数字转是否和乡镇

改变数组中的固定字段数字转是否和乡镇

作者: 东西汉 | 来源:发表于2018-08-10 12:50 被阅读0次
单纯的1转是,0转否并不难,写个foreach遍历一下单独处理就可以了,可是如果层级较深,数据量很大,foreach嵌套foreach的话,难免不会内存报错。

array_map(),array_walk(),array_walk_recursive(),考虑的又这三个函数,
其中array_map()得不到key值,array_walk()只能得到第一层的一层的数据,多层的话使用array_walk_recursive(data, function(value, key){})可以自动判断value是数组的话会自动递归遍历,这就解决了层级很深的数组值转换的问题,代码如下:

    /**
     * 转换年报告企业信息列表的数据0-否 1-是
     * 对registion_region做转换:如1->溧阳镇
     */
    public function getNumToString($data){
        $replace_fields = model('DataFields')->where('field_type','=','tinyint')->column('field_name');
        $country = model('country')->column('country','id');
        array_walk_recursive($data, function(&$v ,$k) use($replace_fields, $country){
            //对tinyint数据0/1转换成否/是
            if(in_array($k, $replace_fields)){
                if($v == 1){
                    $v = '是';
                }else{
                    $v = '否';
                }
                
            }
            //对registion_region做转换:如1->溧阳镇
            if($k == 'registration_region'){
                $v = $country[$v];
            }
            //对credit_code做特殊处理,避免科学计数法
            if($k == 'credit_code'){
                $v = $v.' ';
            }
        });
        return $data;
    }

上面的credit_code字段的处理方式避免EXCEL导出的时候超过15长度的数字变成科学计数法的方式
同时,还有个瓜皮要求,乡镇名导入的时候将输入的中文模糊匹配,转换成对应的id,代码如下:

    /**
     * 转换年报告企业信息列表的数据:否->0 是->1
     * 将镇区模糊匹配,专换成对应的数字
     */
    public function getStringToNum($data){
        $replace_fields = model('DataFields')->where('field_type','=','tinyint')->column('field_name');
        $country = model('country')->column('id','country');
        array_walk_recursive($data, function(&$v ,$k) use($replace_fields, $country){
            if(in_array($k, $replace_fields)){
                if($v == '是'){
                    $v = 1;
                }else{
                    $v = 0;
                }
                
            }
            //对registion_region做转换:如 溧阳镇->1
            if($k == 'registration_region'){
                foreach ($country as $key => $value) {
                    if(strstr($v, $key)){
                        $v = $value;
                        goto a;
                    }
                    
                }
                $v = '';
            }
            a:
        });
        return $data;
    }

相关文章

  • 改变数组中的固定字段数字转是否和乡镇

    单纯的1转是,0转否并不难,写个foreach遍历一下单独处理就可以了,可是如果层级较深,数据量很大,foreac...

  • 校验

    el-input 限制数字 第一:数组校验 根据数组放回得字段进行是否必选得判断 第二: 第三中

  • 统计函数【COUNT】用法,原来是这样的

    COUNT 函数用于计算包含数字的单元格及参数列表中数字的个数,可使用该函数获取数字区域或数组中的数字字段中的项目...

  • json手动解析

    开发的同学可能都遇到过这样的json,对象 中 key是数字(不固定的数字)value是数组,想得到数组中的对象就...

  • JS 中Json常用操作

    直接定义json json 转 String String 转 Json 添加新的字段 判断字段是否存在 删除字段...

  • MJExtion相关

    1、模型中存在数组模型的转换,例如: 则这样转换:其中ItemDataModel是数组元素的模型类 2、模型字段转...

  • 数组

    数组是用来存储固定大小的同类型元素。 当你需要存储数值列表(如数字)时,可以将它们存储在数组中,而不是为每个数字声...

  • JS方法数组方法reduce方法常用实例总结

    数组求和 数组项相乘 数组项计数 数组项去重 多维维数组转一维数组 数组对象指定字段求和 示例代码

  • 判断某个字段的值与items数组内某一字段的值相同

    判断数组内某字段的值,是否与该字段的值相同,若不相同则添加数据进入数组;逻辑:通过for循环判断是否有相同,并设定...

  • JavaScript的实用技巧

    验证是否是数字 验证是否是数组

网友评论

      本文标题:改变数组中的固定字段数字转是否和乡镇

      本文链接:https://www.haomeiwen.com/subject/ngekbftx.html