这是我收到的错误消息:我想知道是否有人可以解释这个错误意味着什么,以及对下面代码的解决方法。
错误消息:只有变量应该通过第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; ?>
答案 0 :(得分:2)
array_shift是一个作用于引用的函数。
如果你在一个数组中,你实际上会编辑该变量本身。 如果你传入的东西不是变量,那么你没有进一步引用你传入的东西,因此错误。 事实上,通过引用调用函数只是在不与变量一起使用时没有效果,这就是你被警告的内容。
解决方案很简单,而不是传递
array_slice($courses, 0, 1)
直接......
首先创建一个变量
$b = array_slice($courses, 0, 1);
然后传递:
$semester = array_shift($b)->getSemester();