如何清理这个if/else语句?(重构)

Joe*_*oel 5 php refactoring if-statement

我知道必须有一个更好的方法来做到这一点,但每当我搜索"&&"我没有得到足够好的结果...

<?php
if (empty($row[ContactName]) && empty($row[ContactEmail]) && empty($row[ContactPhone]) && empty($row[Website])){
echo "Not Provided";
}
else{
...do stuff...
}
?>
Run Code Online (Sandbox Code Playgroud)

谢谢!

Tom*_*mmy 6

原始代码有什么问题?

<?php
if (empty($row[ContactName]) 
    && empty($row[ContactEmail]) 
    && empty($row[ContactPhone]) 
    && empty($row[Website]))
{
    echo "Not Provided";
} 
else{
 ...do stuff...
}
?>
Run Code Online (Sandbox Code Playgroud)

看起来像我的好代码......


bug*_*s94 5

<?php
$i=1;
$ar=array('ContactName','ContactEmail','ContactPhone','Website')

foreach($ar as $a)
  if (empty($row[$a]))
    {
     $i=0;
     break;                      //to make code fast
    }
  if($i)         //do stuff
  else echo 'not provided';
?>
Run Code Online (Sandbox Code Playgroud)

或者如果你真的想让你的代码变得更小,那么在数据库中更改你的列名

From               To
ContactName        Col1
ContactEmail       Col2
ContactPhone       Col3
Website            Col4
Run Code Online (Sandbox Code Playgroud)

然后呢

 <?php
  $i=1;
  for($a=1;$a<5;$a++)
    if (empty($row['Col'.$a]))
    {
      $i=0;
      break;
    }
  if($i)//do stuff
  else echo 'Not Provided';
    ?>
Run Code Online (Sandbox Code Playgroud)

但是重命名列并不好,因为它会使您的数据库不太容易理解.