我可以用||和 && 在一起?
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()
如果我删除&& $this->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;
感谢您的时间和帮助!
【讨论】:
以上是关于我可以用||和 && 在一起?的主要内容,如果未能解决你的问题,请参考以下文章
用 <br/> 替换换行符,在 <code> 标记内用 替换空格