PHP递归方式把一个数组里面的null转换为空字符串的方法

在一些接口的调用中,直接查询数据库出来的字段可能为null字段,但是为了简便前端的判断,需要把null转换成空字符串’’,这个时候就需要递归的方式进行。直接上代码如下:

<?php
// 递归方式把数组或字符串 null转换为空''字符串
function _unsetNull($arr){
    if($arr !== null){
        if(is_array($arr)){
            if(!empty($arr)){
                foreach($arr as $key => $value){
                    if($value === null){
                        $arr[$key] = '';
                    }else{
                        $arr[$key] = _unsetNull($value);      //递归再去执行
                    }
                }
            }else{ $arr = ''; }
        }else{
            if($arr === null){ $arr = ''; }         //注意三个等号
        }
    }else{ $arr = ''; }
    return $arr;
}

// 递归方式把数组或字符串中的空字符串转换为null
function emptyStringToNull($arr){
    if($arr !== ''){
        if(is_array($arr)){
            if(!empty($arr)){
                foreach($arr as $key => $value){
                    $arr[$key] = ($value === '') ? null : emptyStringToNull($value);
                }
            } else {
                $arr = null;
            }
        } else {
            if($arr === '') {
                $arr = null;
            }         //注意三个等号
        }
    } else {
        $arr = null;
    }
    return $arr;
}

var_dump(_unsetNull(null)); // string(0) ""
$arr1 = array('name'=>'zhangsan', 'age'=>18, 'gender'=>'male', 'phone'=>null, 'hobby'=>null);
var_dump(_unsetNull($arr1));
$arr2 = array('name'=>'zhangsan', 'age'=>18, 'gender'=>'male', 'phone'=>'', 'hobby'=>'');
var_dump(emptyStringToNull($arr2));
?>

测试输出结果:

string(0) ""
array(5) {
  ["name"]=>
  string(8) "zhangsan"
  ["age"]=>
  int(18)
  ["gender"]=>
  string(4) "male"
  ["phone"]=>
  string(0) ""
  ["hobby"]=>
  string(0) ""
}
array(5) {
  ["name"]=>
  string(8) "zhangsan"
  ["age"]=>
  int(18)
  ["gender"]=>
  string(4) "male"
  ["phone"]=>
  NULL
  ["hobby"]=>
  NULL
}

参考原文链接:
https://www.cnblogs.com/xuzhengzong/p/8571063.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值