【问题标题】:Only variables should be passed by reference error只有变量应该通过引用错误传递
【发布时间】:2015-11-02 21:22:25
【问题描述】:

这是我收到的一条错误消息:我想知道是否有人可以解释此错误的含义以及以下代码的解决方法。

错误信息:第 381 行只能通过引用传递变量(第 381 行是 $semester 行。)

            <?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; ?>

【问题讨论】:

    标签: php


    【解决方案1】:

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

    如果您传入一个数组,您实际上将编辑该变量本身。 如果您传入不是变量的内容,那么您将无法进一步引用您传入的内容,因此会出现错误。 事实上,通过引用调用函数的事实在不与变量一起使用时根本没有任何效果,这就是您被警告的原因。

    解决方法很简单,而不是通过

    array_slice($courses, 0, 1)
    

    直接...

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

    然后传递:

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

    【讨论】:

    • 谢谢你 - 完美的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2017-04-03
    • 2011-10-16
    相关资源
    最近更新 更多