我遇到了这个奇怪的问题....
所有页面都只有这个代码.global $ currentPage; 是null,我不知道为什么......
<?php
$pager = $_PARAMS["this"];
$pages = 5;
$currentPage = 1;
$tst="ap";
$nearPages = 5;
//Prologic
?>
<div class="pager">
<?php
$nearPagesHalf = ($nearPages - 1) / 2;
drawNumbers(1, 1);
if ($currentPage - $nearPagesHalf <= 0) {
}
drawNumbers($pages, $pages);
?>
<?php
function drawNumbers($from, $to) {
global $currentPage;
for ($i = $from; $i <= $to; $i++) {
echo $currentPage;
if ($i == $currentPage) {
?> <span class="pageNumbers current"><?= $i ?></span>
<?php
} else {
?>
<a href="#">
<span class="pageNumbers"><?= $i ?></span>
</a>
<?php
}
}
?>
<?php
}
function drawDots($from, $to) {
}
?>
</div>
Run Code Online (Sandbox Code Playgroud)
问题
echo $currentPage; prints 1
function drawNumbers($from, $to) {
global $currentPage;
echo $currentPage; prints nothing
Run Code Online (Sandbox Code Playgroud)
zer*_*kms 22
我打赌你通过在另一个函数中包含这个文件来执行这个代码.
所以你需要标记为global
第一个变量出现.
顺便说一句,全局变量很奇怪,将数据传递给函数的更简单和正确的方法是使用伪指令参数.
$currentPage
顶部定义的内容并不存在于global
空间中。为什么不将 作为$currentPage
第一个参数传递给drawNumbers 函数呢?这样就干净多了:
drawNumbers( $currentPage, 1, 1 );
function drawNumbers($currentPage, $from, $to) {
// no need define $currentPage here since it's passed
}
Run Code Online (Sandbox Code Playgroud)