首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >几个几乎相同的语句需要缩短

几个几乎相同的语句需要缩短
EN

Stack Overflow用户
提问于 2016-06-17 13:14:32
回答 3查看 68关注 0票数 1

所以我有这个密码..。

代码:

代码语言:javascript
复制
    if(empty($day0[2])) {
        echo "<td>".$day0[1]."<br></td>";
    } else {
        if(strcmp($day0[1],"Absent") == 0) {
            echo "<td>".$day0[1]."<br>Time: N/A</td>";
        } else {
            echo "<td>".$day0[1]."<br>Time: ".@$day0[2]." - ".@$day0[3]."</td>";
        }
    }

    if(empty($day1[2])) {
        echo "<td>".$day1[1]."<br></td>";
    } else {
        if(strcmp($day1[1],"Absent") == 0) {
            echo "<td>".$day1[1]."<br>Time: N/A</td>";
        } else {
            echo "<td>".$day1[1]."<br>Time: ".@$day1[2]." - ".@$day1[3]."</td>";
        }
    }

    if(empty($day2[2])) {
        echo "<td>".$day2[1]."<br></td>";
    } else {
        if(strcmp($day2[1],"Absent") == 0) {
            echo "<td>".$day2[1]."<br>Time: N/A</td>";
        } else {
            echo "<td>".$day2[1]."<br>Time: ".@$day2[2]." - ".@$day2[3]."</td>";
        }
    }

    if(empty($day3[2])) {
        echo "<td>".$day3[1]."<br></td>";
    } else {
        if(strcmp($day3[1],"Absent") == 0) {
            echo "<td>".$day3[1]."<br>Time: N/A</td>";
        } else {
            echo "<td>".$day3[1]."<br>Time: ".@$day3[2]." - ".@$day3[3]."</td>";
        }
    }

    if(empty($day4[2])) {
        echo "<td>".$day4[1]."<br></td>";
    } else {
        if(strcmp($day4[1],"Absent") == 0) {
            echo "<td>".$day4[1]."<br>Time: N/A</td>";
        } else {
            echo "<td>".$day4[1]."<br>Time: ".@$day4[2]." - ".@$day4[3]."</td>";
        }
    }

    if(empty($day5[2])) {
        echo "<td>".$day5[1]."<br></td>";
    } else {
        if(strcmp($day5[1],"Absent") == 0) {
            echo "<td>".$day5[1]."<br>Time: N/A</td>";
        } else {
            echo "<td>".$day5[1]."<br>Time: ".@$day5[2]." - ".@$day5[3]."</td>";
        }
    }

    if(empty($day6[2])) {
        echo "<td>".$day6[1]."<br></td>";
    } else {
        if(strcmp($day6[1],"Absent") == 0) {
            echo "<td>".$day6[1]."<br>Time: N/A</td>";
        } else {
            echo "<td>".$day6[1]."<br>Time: ".@$day6[2]." - ".@$day6[3]."</td>";
        }
    }

其中,第0-6天等于星期日到星期六,附加在每个数组上的数组号等于多个模糊数组中的一个不同的变量。

这是几个if语句,除了每个语句中的变量名之外,它们都完全相同。我还没能找到一种方法来缩短这段时间,所以我想在这里发帖,看看是否有人对我如何将它组合成更短的代码行有任何想法。我的代码看起来更整洁,功能也更好,我认为这可以教很多人如何缩短代码的长度。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-17 13:26:53

@MagnusEriksson建议创建一个函数,我认为这是最好的方法。

从69行代码到18行代码。

代码语言:javascript
复制
function displayTime($day1,$day2,$day3) {
    if(empty($day2)) {
        return "<td>{$day1}<br></td>";
    } else {
        if(strcmp($day1,"Absent") == 0) {
            return "<td>{$day1}<br>Time: N/A</td>";
        }
        return "<td>{$day1}<br>Time: {$day2} - {$day3}</td>";
    }
}

for ($x = 0; $x <= 6; $x++) {
    echo displayTime(${"day$x"}[1],${"day$x"}[2],${"day$x"}[3]);
}
票数 2
EN

Stack Overflow用户

发布于 2016-06-17 13:20:31

首先将$dayn的所有数组合并到$finalArray中

代码语言:javascript
复制
foreach($finalArray as $key=>$value){
    if(empty($value[2])) {
        echo "<td>".$value[1]."<br></td>";
    } else {
        if(strcmp($value[1],"Absent") == 0) {
            echo "<td>".$value[1]."<br>Time: N/A</td>";
        } else {
            echo "<td>".$value[1]."<br>Time: ".@$value[2]." - ".@$value[3]."</td>";
        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2016-06-17 13:23:29

请试试这段代码。

代码语言:javascript
复制
    $array=array($day0,$day1,$day2,$day3); 

    for($i=0;$i<count($array);$i++){
        if(empty($day.$i[2])) {
            echo "<td>".$day.$i[1]."<br></td>";
        } else {
            if(strcmp($day.$i[1],"Absent") == 0) {
                echo "<td>".$day.$i[1]."<br>Time: N/A</td>";
            } else {
                echo "<td>".$day.$i[1]."<br>Time: ".@$day.$i[2]." - ".@$day.$i[3]."</td>";
            }
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37882539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档