我可以用||和 && 在一起?

Posted

技术标签:

【中文标题】我可以用||和 && 在一起?【英文标题】:can i use || and && together? 【发布时间】:2021-10-27 09:00:32 【问题描述】:

我试图打开一个日志文件并查看一个文本是否不存在,如果它不存在则继续,但同时我想检查它的日志文件是否已经被每封邮件发送。

        public function start() 

    $pattern = $this->config["twp_pattern"] ?? '*.log';
    $pathLog = (isset($this->config["twp_path"])) ? trim($this->config["twp_path"], '/') : 'var/log';
    $lastRun = (isset($this->config['twp_last_run'])) ? str_replace('T', ' ', $this->config['twp_last_run']) : false;

    $path = getcwd() . '/' . $pathLog . '/' . $pattern;

    $this->now = new \DateTime();


    foreach (glob($path) as $log) 
        $open = fopen($log, 'r') or die ('File opening failed');
        $content = fread($open,filesize($log));
        var_dump($content);
        fclose($log);
        if (!$lastRun || filectime($log) < strtotime($lastRun) && $this->checkIfAlreadyExists($content) === false) 
            continue;
        
        $logs[] = $log;
    


    if (!empty($logs)) 
        $success =$this->sendMail($logs);
    

    if($success === false)
        return false;
    
    $this->setLastRun();

    return true;



public function checkIfAlreadyExists($content)
    if (!preg_match_all('/already exists/', $content)) 
        echo "is not there";
        return false;
    else
        echo "is there";
        return true;
    

我的问题是即使电子邮件已经发送,当我运行时它会再次发送 函数 start() 如果我删除&amp;&amp; $this-&gt;checkIfAlreadyExists($content) === false,它将不再为已发送的每封邮件发送日志。谁能发现我的错误?谢谢

【问题讨论】:

$lastRun 似乎没有在任何地方定义 我会将整个代码 $lastRun 其定义 注意:在我添加 checkIfAlreadyExists() 之前一切正常 尝试更改为 if (!$lastRun || (filectime($log) checkIfAlreadyExists($content)) 也是 checkIfAlreadyExists 保证返回一个布尔? php日志有错误吗? 嗯,日志文件有一个错误,显示“已经存在”,我试图不发送这些日志。包含该错误的文件。 checkIfAlreadyExists() 按原样返回 echo,但即使在发送日志后它也会继续发送日志。我想知道我的 if 语句 是否错误。如果没有,那么我必须检查我的功能。谢谢你的时间 ! :) 【参考方案1】:

通过更改我的 if 语句修复

if ((!$lastRun || filectime($log) < strtotime($lastRun)) || ($this->checkIfAlreadyExists($content))) 
                continue;
            

感谢您的时间和帮助!

【讨论】:

以上是关于我可以用||和 && 在一起?的主要内容,如果未能解决你的问题,请参考以下文章

Linux功能-文件权限&目录权限

用 <br/> 替换换行符,在 <code> 标记内用   替换空格

是否可以使用 PayPal API 连接到不同用户的帐户以用资金支付(贷记)他们?

在相同的代码中与 IOS 和 android 一起工作

使用方法 ||和 && 一起在一个 if 语句中[重复]

const与引用。