PHP开发接口如何将null值转字符串的空?

问题描述

由于php是弱类型语言,平时也怎么在意变量类型. 但就在开发接口的时候 null 与 ''. 的不一样就会导致APP端闪退的情况.

如何在返回给APP数据前, 将数组里的null转为字符串的''呢?

tip: 数组可能是一维数组, 也可能是多维数组.

阅读 10k
7 个回答

使用array_walk_recursive可以实现.

so easy

// 注意&引用赋值
array_walk_recursive($array, function (& $val, $key ) {
    if ($val === null) {
        $val = '';
    }    

});
/**
 * 将数组中的null转为字符串''
 * @param $arr
 */
function nulltostr($arr)
{

    foreach ($arr as $k=>$v){
        if(is_null($v)) {
            $arr [$k] = '';
        }
        if(is_array($v)) {
            $arr [$k] = nulltostr($v);
        }
    }
    return $arr;
}

引用答案

@iByron
array_filter是只能去除掉一维的数组的null

function null_filter($arr)
{
    foreach($arr as $key=>&$val) {
        if(is_array($val)) {
            $val = null_filter($val);
        } else {
            if($val === null){
                unset($arr[$key]);
            }
        }
    }
    return $arr;
}

@SampsonHuang

$data= \str_replace(':null', ':""', json_encode($data));

相关问题

PHP开发接口响应数据null怎么过滤?

首先这种null''这种操作应该在存放数组的时候做,否则就要对整个数组进行遍历,量不大还好,量大的话会消耗相当大的资源,下面是对整个数组的null的替换,是针对一维数组,多维数组,那就foreach好了,还是推荐第一种做法,在存放前做转换操作

<?php
function ttt($val) {
    return is_null($val) ? '' : $val;
}
$tt = array(1, 2, 3, null, 4, null, 5);
var_dump(array_map('ttt', $tt));
function changecontent($arr) {
$result = array();
if(is_array($arr)) {
    foreach($arr as $key=>$val) {
        if(is_array($val)) {
            $newarr = changecontent($val);
            $result[$key] = $new;
        } else if($val === NULL) {
            $result[$key] = '';
        } else {
            $result[$key] = $val;
        
        }
    }
}
}

按照我的经验来说, 出现 null 的原因都是数据库字段可以为空了

数据库设计的就有问题,允许很多的null,会有你头疼的时候

我觉得你在用之前判断一下再进行转换就好了,毕竟像你说,你数组是几维的不确定,但是你要用的时候肯定是遍历出来了,所以你加个判断

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题