Only variables should be passed by reference,即该方法的变量(variables )只能通过引用(reference)来传递。一般是传参导致的错误。
常见情况,直接拿explode()的结果去传入给某个方法,而这个方法的变量(variables )只能通过引用(reference)来传递。
例如,
$date = '2018-04-17'; $day = array_pop(explode('-',$date));
这里explode()返回的是一个数组(array)的值(即,具体的内容),而array_pop()的变量要求是一个引用(reference)。
具体见文档 mixed array_pop ( array &$array )。
类似的array_shift(),end(),prev()等等都会报以上的错误。
【解决办法】:
将explode()返回的数组先赋值给一个变量,再将变量传入该方法即可。
例如,
$date = '2018-04-17'; $arrDate = explode('-',$date); $day = array_pop($arrDate);