前言:
而今姐妹们对“php去除数组空值”可能比较珍视,小伙伴们都需要剖析一些“php去除数组空值”的相关资讯。那么小编在网摘上收集了一些关于“php去除数组空值””的相关资讯,希望看官们能喜欢,各位老铁们快快来学习一下吧!我们在进行 WordPress 开发的时候,在获取数据的时候,需要对数据清理,这时候可能需要数组去掉 null 的值,空值等,保留下非 null 值和非空的值等操作,为了方便这些操作,我定了几个用于数据判断的回调函数。
判断数据非 null
判断数据非空,我们可以直接使用 isset 来判断,所以很多人和我一样,想着过滤掉数组中非空的字符也直接使用 isset 作为回调函数:
$data = array_filter($data, 'isset');
但是上面的函数直接会报:
array_filter() expects parameter 2 to be a valid callback, function 'isset' not found or invalid function name
这是因为 isset 是一个语言构造器而不是一个函数,所以只能使用 !is_null 来判断非 null 值,然后使用闭包的方式:
$data = array_filter($data, function($item){ return !is_null($item);});
程序中有非常多的这样的数组中需要过滤掉 null 值的处理,每次都使用闭包函数的方式感觉有点不优雅,所以我定义了一个函数 is_exists。
随便说一下这个函数名我想了很久,很早之前就想写这个函数作为回调函数使用了,但是一直没有好名字,然后看到 file_exists,function_exists 和 method_exists,突然来了灵感,于是兴奋地写了这个 is_exists 这个函数:
if(!function_exists('is_exists')){ function is_exists($var){ return isset($var); }}
然后就可以直接用于回调函数了:
$data = array_filter($data, 'is_exists');判断字符串是否为空
在 PHP 里面空值是可以使用 empty 来判断的,但是有一点要特别注意一下,这个函数会把字符串 '0' 也认为是空的,而很多时候我们并不希望,比如表单输入的时候,用户输入 0 了,其实已经输入了,并不是空,所以我同样也创建了一个函数 is_blank。
哈哈,是不是这个名字也很好?blank 空白的意思,有0那就不是空白咯。 好的名字真的很多时候是成功的 80%,有时候写程序,想不到一个好名字真的会饭菜不香,我之前尝试写成 is_not_empty 怎么看都觉得不优雅,觉得自己的代码顺便也变得很垃圾, 因为这样不是从正向思考问题,is_blank 则不同,立刻高大上很多了:
if(!function_exists('is_blank')){ function is_blank($var){ return empty($var) && !is_numeric($var); }}
同样如果不为空的字符串,我也定义了一个函数 is_populated,字面意思:已经填充了,那就不是空了:
if(!function_exists('is_populated')){ function is_populated($var){ return !is_blank($var); }}
这样,我们有时候在表单数据清理的时候,比如要清理掉空的字段,但是保留输入0的,也可以直接使用:
$data = array_filter($data, 'is_populated');
哈哈,这三个函数都很简单,但是我还是觉得自己很棒棒哒,因为我觉得这三个函数的名字起得好,然后用起来也是能够一目了然,并且很多地方去掉了闭包函数的调用方式,程序也变优雅了很多。
所以我们才说程序员是最简单的一群人,因为自己起了一个好名字都会开心半天。
标签: #php去除数组空值