Yii2:两次echo变量给出了错误的结果

时间:2014-12-23 18:32:35

标签: php yii2

我的模型中有一个函数getDaysTotal说是estimate.php。

如果在我的view.php中,如果我使用

echo $model->DaysTotal; 

我得到了值3.但是如果我再做一次

echo $model->DaysTotal;

现在我得到1.任何想法,为什么我这样得到它。 这发生在estimate.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;
               } 

2 个答案:

答案 0 :(得分:3)

你的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);

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

答案 1 :(得分:0)

很有趣的是你得到了什么,因为“echo $ var”可能是一个非对象。

    <?php
       $a = 6;
       echo $a -> b;
    ?>

PHP Notice:  Trying to get property of non-object.

在PHP中右箭头“ - &gt;”用于访问对象的组成部分,在php中它类似于“::”或简陋的“。”在java和C系列等语言中。

没有更多上下文,无法确定您的具体情况,但this page on the "->" 可能对您有所帮助。

如果那不能满足你的需要,那就是general PHP note card