在if语句中赋值


assigning values in an if statement?

当使用代码点火器时,我创建了很多函数,看起来像这样;

function info($id){
  $r = $this->db->select('id', 'name', 'age')->from('users')->where('id', $id)->get();
  return ($r->num_rows() == 0 ? false : $r->result());
}

现在,当我使用这个函数时,我也使用这个函数来检查用户是否存在,并将其分配给一个变量

所以它会被写成

if( ($user = $this->user->info($_GET['id'])) === false )
  die('User not found');
//now we can continue and $user contains the user info

我的问题是,有什么理由这是一个坏主意吗?

就我所知,这和

是一样的
$user = $this->user->info($_GET['id']);
if( $user === false )
  die('User not found');

但是在我看来更容易理解

正如您所说,这两种方法是相同的。唯一的区别是清晰度。我认为第二种方法比第一种方法更清晰。您应该与从事您项目的其他开发人员讨论您的约定,并设置编码标准。一致性是最重要的。

第一种方法的缺点是很难判断您是否打算使用==而不是=。在第二种方法中,没有这种歧义。