You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用end函数报传引用错误及分页锚点加active类问题

问题1:end() 函数抛出Notice报错的修复方案

报错原因:PHP的end()函数要求传入的参数是可被引用的变量,你直接将explode()执行后返回的临时结果传入,没有赋值给变量存储,就会触发Only variables should be passed by reference的Notice提示。
两种修复方案可选:

  • 方案1:先存储explode结果再调用end
// Program to display URL of current page.
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') 
    $link = "https";
else 
    $link = "http";
$link .= "://";
$link .= $_SERVER['HTTP_HOST'];
$link .= $_SERVER['REQUEST_URI'];
// 新增变量存储explode结果
$url_parts = explode("?", $link);
$getpage = end($url_parts);
$pagename = '?'. $getpage;
echo $pagename;
  • 方案2:直接调用系统变量获取查询串,更简洁高效
    不需要手动拼接拆分URL,直接用$_SERVER['QUERY_STRING']就能拿到?后面的所有参数:
$getpage = $_SERVER['QUERY_STRING'] ?? '';
$pagename = '?' . $getpage;
echo $pagename;

问题2:分页a标签active类不生效的修复方案

原有代码存在两个核心错误:

  1. 已经处于PHP执行上下文的echo语句中,不能再嵌套<?php ?>标记,嵌套的代码不会被解析,会直接作为字符串输出到HTML中
  2. 相等判断用了赋值运算符=,而非比较运算符==,逻辑完全错误
    正确实现方式:
    首先先获取当前页码的数值,避免字符串比较的异常:
// 先获取当前页码,默认是第1页
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

然后输出分页标签时提前判断是否匹配,拼接类名:

// 循环输出页码的逻辑中,$x是当前遍历到的页码
$class = $current_page == $x ? 'active' : '';
echo "<a class=\"{$class}\" href='?page={$x}'> {$x} </a>";

内容的提问来源于stack exchange,提问作者user17524645

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:06:02