首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP代码清理(多个If,Else,Else)

PHP代码清理(多个If,Else,Else)
EN

Stack Overflow用户
提问于 2012-05-01 15:31:34
回答 2查看 165关注 0票数 1

我有这段代码。这是可行的,但我相信有一种更简单、更符合逻辑的方法。为了保存问题,$seriespart而不是$row["SeriesPart"]是特定的,因为以前的代码。

代码语言:javascript
复制
// normal titling convention is Number - Series - Series Part - Sermon
if ($row["Number"] && $row["Series"] && $row["SeriesPart"] && $row["Sermon"]) $title = $row["Number"]." - ".$row["Series"]." - Pt. ".$seriespart." - ".$row["Sermon"];
    // but sometimes a series doesn't have sermon titles
    else if ($row["Number"] && $row["Series"] && $row["SeriesPart"]) $title = $row["Number"]." - ".$row["Series"]." - Pt. ".$seriespart;
        // series that are in process don't have product numbers
        else if ($row["Series"] && $row["SeriesPart"] && $row["Sermon"]) $title = $row["Series"]." - Pt. ".$seriespart." - ".$row["Sermon"];
            // but sometimes a series doesn't have sermon titles
            else if ($row["Series"] && $row["SeriesPart"]) $title = $row["Series"]." - Pt. ".$seriespart;
                // and we don't want product singles just showing a sermon title (it should say S74 - Title as a distinction from other oddball sermons)
                // note the substr() as we want it to say S71 and not S0171
                else if ($row["Number"] >= "0100" && $row["Number"] <= "0199") $title = "S".substr($row["Number"], 2)." - ".$row["Sermon"];
                    // just show the bloody sermon title already
                    else $title = $row["Sermon"];

我们有一堆布道。这些布道通常是系列的一部分。如果一个系列已经完成,它将有一个系列编号、系列标题、系列部分,以及可选的讲道标题、布道部分、字幕和字幕部分。如果一个系列没有完成,就不会有一个序列号。有时候,没有讲道的题目。如果它不是一个系列的一部分,那么它本身就可以是一个实际的产品。其他时候,这只是一个古怪的布道,并不是任何事情的一部分。

例子..。

治愈了(只有布道,不是系列的一部分,怪胎)

S45 - Sucker还是Sower?(单件,即产品)

帮手- Pt。你需要帮助吗?(正在进行中的系列,没有编号)

0513 -坚强而不是你的心- Pt。2(已完成系列,没有讲道题目)

1101 -上帝的荣誉。11 -上帝如何荣耀我们- Pt。5-使用我们- Pt。3(合编系列,讲道题目-布道部分-副标题-副标题部分)

对于如何清理代码,我有什么想法,这样我就不用再重复同样的信息了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-01 15:44:24

我想这能做你想做的事:

代码语言:javascript
复制
$parts = array();
if ($row["Number"] && ($row["Number"] < "Music01" || $row["Number"] > "Music99"))
{
    if ($row["Number"] >= "0100" && $row["Number"] <= "0199") $parts[] = "S". substr($row["Number"], 2);
    else $parts[] = $row["Number"];
}

if ($row["Series"]) $parts[] = $row["Series"];
if ($row["SeriesPart"]) $parts[] = "Pt. $seriespart";
if ($row["Sermon"]) $parts[] = $row["Sermon"];

$title = implode(" - ", $parts);
票数 1
EN

Stack Overflow用户

发布于 2012-05-01 15:41:11

代码语言:javascript
复制
$title = '';
if ($row["Series"] && $row["SeriesPart"]) {
    if ($row["Number"]) {
        $title .= $row["Number"]." - ";
    // series that are in process don't have product numbers
    }
    $title .= $row["Series"]." - Pt. ".$seriespart;
    if ($row["Sermon"]) {
        $title .= " - ".$row["Sermon"];
    }
// and we don't want product singles just showing a sermon title (it should say S74 - Title as a distinction from other oddball sermons)
// note the substr() as we want it to say S71 and not S0171
} elseif ($row["Number"] >= "0100" && $row["Number"] <= "0199") {
    $title = "S".substr($row["Number"], 2)." - ".$row["Sermon"];
}
// just show the bloody sermon title already
else {
    $title = $row["Sermon"];
}

如果你不想要局部的创造

代码语言:javascript
复制
if ($row["Series"] && $row["SeriesPart"]) {
    if ($row["Number"]) {
        if ($row["Sermon"]) {
            $title = $row["Number"]." - ".$row["Series"]." - Pt. ".$seriespart." - ".$row["Sermon"];
            // but sometimes a series doesn't have sermon titles
        } else {
            $title = $row["Number"]." - ".$row["Series"]." - Pt. ".$seriespart;
        }
    // series that are in process don't have product numbers
    } else {
        if ($row["Sermon"]) {
            $title = $row["Series"]." - Pt. ".$seriespart." - ".$row["Sermon"];
        // but sometimes a series doesn't have sermon titles
        } else {
            $title = $row["Series"]." - Pt. ".$seriespart;
        }
    }
// and we don't want product singles just showing a sermon title (it should say S74 - Title as a distinction from other oddball sermons)
// note the substr() as we want it to say S71 and not S0171
} elseif ($row["Number"] >= "0100" && $row["Number"] <= "0199") {
    $title = "S".substr($row["Number"], 2)." - ".$row["Sermon"];
}
// just show the bloody sermon title already
else {
    $title = $row["Sermon"];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10400024

复制
相关文章

相似问题

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