求教 多维数组中删除空记录 (上次解决的有个bug

蜗牛慢慢向上爬 2015-03-16 06:29:12
原贴
:http://bbs.csdn.net/topics/390997712



最新疑问,当数组里有一个是 ‘0’ 的值时,会把这个元素删除掉,而实际上这是一条有值的元素
["status"]=>
string(1) "0"




$a = array(
array('a' => 0, 'b'=> ''),
array('a' => 0, 'b'=> ''),
array('a' => 1, 'b'=> '2'),
);
print_r(array_values(array_no_empty($a)));

function array_no_empty($arr) {
if (is_array($arr)) {
foreach ( $arr as $k => $v ) {
if (empty($v)) unset($arr[$k]);
elseif (is_array($v)) {
$t = array_no_empty($v);
if($t) $arr[$k] = $t;
else unset($arr[$k]);
}
}
}
return $arr;
}
这个方法再怎么改进,谢谢!
...全文
137 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对着呢 。 别的模块调用有点问题
  • 打赏
  • 举报
回复
好像还有点问题 我再看看
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
多谢 && $v !== ‘0’
xuzuning 2015-03-16
  • 打赏
  • 举报
回复
if (empty($v)) unset($arr[$k]); 改为 if (empty($v) && $v !== 0) unset($arr[$k]);
  • 打赏
  • 举报
回复
引用 1 楼 ohmygirl 的回复:
if( empty() ) 改为 if($v === false){ unset .......... }



不太好使, 这样‘0’的值保存下来了

可是 有空字符串的数据没删除掉
ohmygirl 2015-03-16
  • 打赏
  • 举报
回复
if( empty() ) 改为 if($v === false){ unset .......... }

21,873

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧