【问题标题】:Better way to write if sequence更好的写 if 序列的方法
【发布时间】:2015-08-18 14:38:52
【问题描述】:

我有一系列 if 语句,我想不出更好的方法来写它,就是这样:

$a='';$b='';$c='';
if($row->nA!=0){
        $a = $row->nA;
}
if($row->nB!=0){
        $b = $row->nB;
}
if($row->nC!=0){
        $b = $row->nC;
}

很简单,但我找不到比这更好的写法

【问题讨论】:

  • 如果!= 0测试只是为了判断是否有值,不需要和0比较,直接说if ($row->nA)即可。但这取决于它们实际上不是0 与简单地是真还是假是否重要。您也可以通过添加更多空格来使其更具可读性,例如每个if 之后,每个{ 之前都有一个空格...

标签: php


【解决方案1】:

你的方式并没有完全错误。 如果你想写点别的,试试这样:

$a = ($row->nA != 0) ? $row-nA : '';
$b = ($row->nB != 0) ? $row-nB : '';
$c = ($row->nC != 0) ? $row-nC : '';

但是,就像我说的,你的方式没有问题;)

【讨论】:

  • 当回应他们时,应该单独回应每个人,我的意思是echo $a; echo $b; echo $c 或者还有其他更好的方法
  • 取决于您如何将内容回显到浏览器。你是用框架还是“好旧的普通 php”来做这个。这更像是一个架构问题而不是“一般”问题,这取决于。有时,只回显(或打印或打印)你的东西是很好的,有时你可能需要一些特别的东西来做到这一点。
  • 我正在使用 Codeigniter
【解决方案2】:

Sascha Presnac 是对的 - 你的做法没有任何问题。但是,如果您稍微整理一下代码,它可能会很有用。

$a = '';
$b = '';
$c = '';

if ($row->nA != 0) {
   $a = $row->nA;
}

if ($row->nB != 0) {
   $b = $row->nB;
}

if ($row->nC != 0) {
   $b = $row->nC;
}

使用额外的行来编写代码不是问题。最好是更分散和更容易阅读,而不是皱巴巴和难以阅读:)。但是,如果您想用尽可能少的代码来完成,那么请选择 Sacha Presnac 的方法 :)

【讨论】:

    【解决方案3】:

    如果你有很多变量,你可以用

    $variables = ['a', 'b', 'c'];
    foreach ($variables as $variable)
    {
        $$variable = ($row->{"n" . strtoupper($variable)} != 0) ? $row->{"n" . strtoupper($variable)} : '';
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 1970-01-01
      • 2014-10-21
      • 2018-08-01
      • 2015-07-19
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多