我们在进行 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');
哈哈,这三个函数都很简单,但是我还是觉得自己很棒棒哒,因为我觉得这三个函数的名字起得好,然后用起来也是能够一目了然,并且很多地方去掉了闭包函数的调用方式,程序也变优雅了很多。
所以我们才说程序员是最简单的一群人,因为自己起了一个好名字都会开心半天。😁
暂无评论内容