只应通过引用错误传递变量

时间:2015-11-02 21:22:26

标签: php

这是我收到的错误消息:我想知道是否有人可以解释这个错误意味着什么,以及对下面代码的解决方法。

错误消息:只有变量应该通过第381行的引用传递(第381行是$学期行。)

            <?php // Student Fee section
        if ($user->isStudentFeeDue()):
            $semester   = array_shift(array_slice($courses, 0, 1))->getSemester();    
            $studentfee = new UserLocationBasedStudentFee($semester, $user);
            $purchase->addItem($studentfee);
            ?>
            <div style="border-top: 2px solid rgb(0, 0, 0); padding: 16px 6px;">
                <label>
                    <?php echo $studentfee->getDescription(); ?>
                    (<?php echo money_format(CBV\MONEY_FORMAT_COMMON, $studentfee->getCost()); ?>)
                </label>
            </div>
        <?php endif; ?>

1 个答案:

答案 0 :(得分:2)

array_shift是一个作用于引用的函数。

如果你在一个数组中,你实际上会编辑该变量本身。 如果你传入的东西不是变量,那么你没有进一步引用你传入的东西,因此错误。 事实上,通过引用调用函数只是在不与变量一起使用时没有效果,这就是你被警告的内容。

解决方案很简单,而不是传递

array_slice($courses, 0, 1)

直接......

首先创建一个变量 $b = array_slice($courses, 0, 1);

然后传递:

$semester   = array_shift($b)->getSemester();