php,如何简化一个 php 脚本?

Posted

技术标签:

【中文标题】php,如何简化一个 php 脚本?【英文标题】:php, how to simplify a php script? 【发布时间】:2011-10-04 16:52:49 【问题描述】:

我不确定这是一个好问题,但这是我的问题。我有一个 if 语句太长了,我想知道是否有其他类型的语法可以缩短它:

if (($time1 <= $one_day)&&
    ($time2 <= $one_day)&&
    ($time3 <= $one_day)&&
    ($time4 <= $one_day)&&
    ($time5 <= $one_day)&&
    ($time1 != NULL)&&
    ($time2 != NULL)&&
    ($time3 != NULL)&&
    ($time4 != NULL)&&
    ($time5 != NULL))
    //do sometihng

这是一个例子,但我有一个类似的例子,最高可达..&amp;&amp;($time15 &lt;= $one_day)

声明很容易解释,$time1, $time2, etc 可以返回空,所以我必须检查它们是否是 NULL

有什么想法吗?

谢谢

【问题讨论】:

如果这些时间中的任何一个是 0 怎么办? 基于我的脚本,它不能。但好点。 【参考方案1】:

你可以把通用的东西放在一个函数中:

function validate_time($time, $one_day) 
    return $time <= $one_day && $time != NULL;

if (validate_time($time1, $one_day) &&
    validate_time($time2, $one_day) &&
    validate_time($time3, $one_day) &&
    validate_time($time4, $one_day) &&
    validate_time($time5, $one_day)) 
    // do something

您可能希望重构代码并消除复制和粘贴这些检查的需要。完成工作的另一种方法:

while (true) 
    foreach (array($time1, $time2, $time3, $time4, $time5) as $time) 
        if ($time > $one_day || $time == NULL) 
            break 2;
        
    
    // do something
    break;

上面的内容也可以放在一个函数中,这会使while循环和break关键字变得多余。然后用 return 替换 break 2

【讨论】:

使用!= NULL 可能比使用is_null() 更好,显然是more than 14 times quicker :-)【参考方案2】:

为变量使用数组会有所帮助。您可以遍历它们并检查。

【讨论】:

【参考方案3】:

将时间放在一个数组中,并使用for 循环进行检查。

【讨论】:

【参考方案4】:

考虑使用数组,而不是使用 15 个相似但不同的变量。

【讨论】:

【参考方案5】:

如果您必须(或想要)保留原始变量名而不使用数组,这是一个很好的解决方案(对于 $time1 到 $time5):

$ok = true;
for ($i = 1; $i <= 5; $i++)

    $var =& $'time'.$i;
    if ( ! ($var <= $one_day && $var != NULL))
    
        $ok = false;
    


if ($ok)

    //do something

【讨论】:

可以进一步简化 `if ($var > $one_day) $ok = false;break; 【参考方案6】:

您可以将所有值设置为一个数组并使用 For 循环进行比较。

【讨论】:

【参考方案7】:

一个有助于您重复使用的功能化版本。这类似于 Lekensteyns 代码。

$times = array(
    'time',
    'time',
    'time',
    'time',
    'time',
);

function validateTime($checks, $limit) 

    foreach($checks as $check) 
        if($check == null || $check > $limit) 
            return false;
        
    
    return true;


if(validateTime($times,$one_day) == true) 
  //codey code.

【讨论】:

以上是关于php,如何简化一个 php 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何生成/创建自己的PHP CLI命令

如何在等待 php 客户端脚本的回复时终止 php 服务器脚本? [复制]

如何保护 php 脚本?

如何使用 pdo 将字符串数组传递给 php 中的 plsql 例程

如何编写一个 PHP 脚本来搜索 PHP 文件以获取特定信息?

如何在php脚本之间传递变量?