检查表的3列是空还是设置的优雅方式

时间:2014-03-25 15:03:29

标签: php if-statement

我需要编写一个函数来检查表的3列是空的还是设置的。我的代码有效,但我觉得它不是很优雅。因为如果要检查4列,则必须重写整个代码。你能以优雅的方式重写这段代码吗?

                //row[0] == id 
                //row[1] == licensekey 
                //row[2] == url_1 
                //row[3] == url_2 
                //row[4] == url_3

            if($row[2] == '' && $row[3] == '' && $row[4] == ''){
                echo 'Every row is empty';
            }
            if($row[2] == '' && $row[3] == '' && $row[4] != ''){
                echo 'Row 1 and 2 are empty';
            }
            if($row[2] == '' && $row[3] != '' && $row[4] != ''){
                echo 'Row 1 is empty';
            }
            if($row[2] != '' && $row[3] == '' && $row[4] == ''){
                echo 'Row 2 and 3 are empty';
            }
            if($row[2] != '' && $row[3] != '' && $row[4] == ''){
                echo 'Row 3 is empty';
            }
            if($row[2] != '' && $row[3] != '' && $row[4] != ''){
                echo 'Every row is set';
            }

3 个答案:

答案 0 :(得分:4)

    $empty = [];
    foreach ($row as $i => $val) {
        if (!$val) {
            $empty[] = $i;
        }
    }
    if ($empty) {
        $msg = 'Row ' . implode(' and ', $empty) . ' are (is) empty';
    } else {
        $msg = 'Every row is set';
    }
    echo $msg;

答案 1 :(得分:1)

这适用于任何长度的行

function checkRow($row)
{
    $st = "";
    foreach($row as $key => $col)
    {
        if($col == '')
        {
            if($st) 
                $st .= " and ";
            $st .= "Column $key is empty ";
        }
    }
    if(!$st)
        $st = 'Every col is set';
    return $st;
}

答案 2 :(得分:1)

因为你的问题似乎是学术性的:

根据您想要达到的目标,有两种不同的答案变体。

  1. 仅对特定的空列组合执行某些操作
  2. 针对每个空白的列执行特定的操作
  3. 您的示例看起来像变体2,因为您只是打印该特定列为空。在这种情况下,您可以像

    一样编写它
    if($row[2] == ''){
       echo 'Row 2 is empty'
    }
    if($row[3] == ''){
       echo 'Row 3 is empty'
    }
    

    变量1然而意味着你只想做某事,而只说第2列和第3列是空的而其他则不是。 在这种情况下,你唯一的机会就是按照你的方式去做。为了使代码看起来更清晰,你应该编写一个函数:

    //pseudo code:
    function boolean isEmpty($column){
       if($column == ''){
          return true;
       } else {
          return false;
       }
    }
    

    并在你的IF中调用它。