关于空值的判断

PHP

isset()

isset判断变量是否存在,当变量存在时true反之false

注:变量 != 值

empty()

empty判断变量的值是否为空值,空值返回true反之false

注:这里的空值包括(0,null,不赋值)

is_null()

is_null判断变量的值是否为null,是则返回true反之false

注:这里的空值只包括null

is_bool()

is_bool判断是否为布尔值,是则返回true反之false

is_array()

is_array判断是否为数组,是则返回true反之false

is_numeric()

is_numeric判断是否为数字或者由数字组成的字符串,是则返回true反之false

直接判断变量

例:

//当没有定义变量
echo $user ? 1 : 0;
//输出:报错

$user = 0;//或者 $user = '0';
echo $user ? 1 : 0;
//输出:0

$user = '';
echo $user ? 1 : 0;
//输出:0

$user = null;
echo $user ? 1 : 0;
//输出:0

$user = [];
echo $user ? 1 : 0;
//输出:0

laravel常见查询为空返回的结果

  • 如果first, find查询值为空则会返回null
    判断为空(两种写法,其它写法可参考上面判断):
$user = User::where('id', 1)->first();
if (is_null($user)) {
    //操作
} 
//或者:
if (!$user) {
    //操作
}
  • 如果findOrFail查询值为空则会返回报错信息No query results for model ...
  • 如果get, pluck查询值为空则会返回一个空数组
    判断数组为空数组:
$user = User::where('id', 1)->get();
if (count($user) == 0) {
    //操作
} 
  • 除了通过count方法可以确定查询条件的结果是否存在之外,还可以使用 existsdoesntExist 方法

trim()
函数移除字符串两侧的空白字符或其他预定义字符

例:trim($row['tel'])
当$row['tel']的值为空时,trim()会输出一个空字符串
解决方法:isset($row['tel']) ? trim($row['tel']) : $row['tel']

参考:https://learnku.com/docs/laravel/5.8/queries/3926?tdsourcetag=s_pctim_aiomsg

return DB::table('orders')->where('finalized', 1)->exists(); //有数据为true,反之false
return DB::table('orders')->where('finalized', 1)->doesntExist();//有数据为false,反之true

 3,844 total views,  2 views today

Revisions

There are no revisions for this post.

Comments are closed.