Yii2:回显变量两次给出错误的结果


Yii2: echo variable twice gives wrong result

好吧,我的模型中有一个函数getDaysTotal说估计.php。

如果在我看来.php如果我使用

echo $model->DaysTotal; 

我得到值 3。但如果我再做一次

echo $model->DaysTotal;

现在我得到 1。任何想法,为什么我会这样。这发生在估计.php中的任何函数上。如果我第二次使用它,结果很奇怪。

我在这里做错了什么吗?我该如何纠正此问题?谢谢。

以下是getTotalDays函数的代码:

public function getDaysTotal() {
               $this->discharge_date = strtotime($this->discharge_date);
               $this->admission_date = strtotime($this->admission_date);
               $datediff = ($this->discharge_date - $this->admission_date);
               $fraction_days = ($datediff/(60*60*24));
               if ($fraction_days < 1){
                          return 1;
               }elseif(($datediff)%(60*60*24) < 10800){
                 $option2 = floor($datediff/(60*60*24));
                 return $option2;
               }elseif(($datediff%86400) > 10800 && ($datediff%86400)<21600) {
                  $option3 = ceil($datediff/(60*60*24)*2)/2;
                  return $option3;
               }elseif (($datediff%86400) >21600){
                   $option4= ceil($datediff/86400);
                   return $option4;
               } 

你的 getter 会改变你的对象:

public function getDaysTotal() {
           $this->discharge_date = strtotime($this->discharge_date);
           $this->admission_date = strtotime($this->admission_date);

你不应该这样做。在下次调用时strtotime(int)为两行返回 false。

尝试以下操作:

public function getDaysTotal() {
           $discharge_date = strtotime($this->discharge_date);
           $admission_date = strtotime($this->admission_date);
           $datediff = ($discharge_date - $admission_date);

此处使用了辅助变量,没有任何对象状态修改。

有趣的是

,你得到了任何东西,因为"echo $var"可能是一个非对象。

    <?php
       $a = 6;
       echo $a -> b;
    ?>
PHP Notice:  Trying to get property of non-object.

在PHP中,右箭头"->"用于访问对象的组成部分,在PHP中,它类似于Java和C家族等语言中的"::"或谦卑的"."。

如果没有更多的上下文,就不可能说出你的情况下到底发生了什么,但也许"->"上的这个页面会对你有所帮助。

如果这不能给你你需要的东西,这里有一个通用的PHP记事卡