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

猜你喜欢

转载自blog.csdn.net/username666/article/details/108359885