问题描述
由于php是弱类型语言,平时也怎么在意变量类型. 但就在开发接口的时候 null 与 ''. 的不一样就会导致APP端闪退的情况.
如何在返回给APP数据前, 将数组里的null转为字符串的''呢?
tip: 数组可能是一维数组, 也可能是多维数组.
由于php是弱类型语言,平时也怎么在意变量类型. 但就在开发接口的时候 null 与 ''. 的不一样就会导致APP端闪退的情况.
如何在返回给APP数据前, 将数组里的null转为字符串的''呢?
tip: 数组可能是一维数组, 也可能是多维数组.
/**
* 将数组中的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;
}
$data= \str_replace(':null', ':""', json_encode($data));
首先这种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;
}
}
}
}
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
3 回答1.1k 阅读
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
使用array_walk_recursive可以实现.
so easy