清楚地检查变量isset的方法

时间:2017-01-02 15:33:18

标签: php laravel

每次我从数据库中获取一些信息时,我都会重复进行isset检查或者变量是否为真。有没有聪明的方法以不同的方式来实现它?

如果我不这样做并且变量为空它会给我一个错误,所以我无法重复它。

我相信我正在做一些不必要的事情,它会让代码变得更长。

  $variable = DB::select('SELECT * FROM `table_name`');
  $variable2 = DB::select('SELECT * FROM `table_name2`');

  if (isset($variable)){
     if ($variable == 1){
         doSomething();
     }
  }

  if ($variable2){
     if ($variable2 == 1){
         doSomething2();
     }
}
编辑:我刚刚意识到,如果一个空变量没有给我任何错误,它将通过所有下一个函数进行处理而没有任何意义,并且它会使找到整个脚本错误的位置变得更加复杂。

嗯,这可能意味着我的问题实际上是一个优势哈哈。

1 个答案:

答案 0 :(得分:1)

如果您这样做:

Route::get('/select', ['as' => 'debug.select', function () {
    // select  
    $var = DB::select('select * from users where email = 1');

    // convert to boolean
    dd(!!$var);
}]);

您会看到结果是:

false

虽然

Route::get('/select', ['as' => 'debug.select', function () {
    // Select 1 user
    $var = DB::select('select * from users limit 1');

    // Convert an array to boolean / empty arrays === false on PHP
    dd(!!$var);
}]);

true

话虽如此,使用你的代码

$variable = DB::select('SELECT * FROM `table_name`');
$variable2 = DB::select('SELECT * FROM `table_name2`');

if (! $variable) {
    doSomethingWhenNothingWasFound();
}

if ($variable) {
    doSomethingIfFound();
}

if ($variable2) {
    doSomething2();
}