Почему глобальное значение null в функции?

Я получаю эту странную проблему ….

На этой странице есть только этот код. 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> 

ПРОБЛЕМА

 echo $currentPage; prints 1 function drawNumbers($from, $to) { global $currentPage; echo $currentPage; prints nothing 

Бьюсь об заклад, вы выполняете этот код, включив этот файл в другую функцию.

Поэтому вам нужно также отметить global первичную переменную.

Btw, глобальные переменные странны, более простой и правильный способ передачи данных в функцию – это использование параметров функции.

$currentPage определенный сверху, не живет в global пространстве. Почему бы вам просто не передать $currentPage в качестве первого параметра функции drawNumbers? Это намного чище:

 drawNumbers( $currentPage, 1, 1 ); function drawNumbers($currentPage, $from, $to) { // no need define $currentPage here since it's passed }