2010-11-02 13 views
8

मुझे यह अजीब समस्या मिलती है ....क्यों वैश्विक कार्य में शून्य है?

सभी पेज में केवल यह कोड है। वैश्विक $ वर्तमान पृष्ठ; रिक्त है और मुझे नहीं पता क्यों ...

<?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 
+1

यदि यह एक पृष्ठ का एकमात्र कोड है तो यह कैसे '$ पेजर = $ _PARAMS ["यह"];' काम करना चाहिए? – zerkms

उत्तर

17

मुझे यकीन है कि आप इस फ़ाइल किसी अन्य समारोह के अंदर शामिल करके इस कोड को क्रियान्वित कर रहे हैं: यह अधिक स्वच्छ कि रास्ता नहीं है।

तो आपको global पहले वैरिएबल मौके भी के रूप में चिह्नित करने की आवश्यकता है।

बीटीडब्ल्यू, वैश्विक चर अजीब है, फ़ंक्शन को डेटा पास करने का अधिक सरल और सही तरीका - फ़ंक्शन पैरामीटर का उपयोग करना है।

+0

हां इसे निकाला गया है ... – GorillaApe

+2

+1 "वैश्विक चर अजीब है" – Frankie

+2

@ पर्फ: फिर पहले चर को वैश्विक के रूप में चिह्नित करें: 'वैश्विक $ currentPage = 1; '। लेकिन वैसे भी - यह समाधान भयानक है। साथ ही 'eval()' भयानक है। – zerkms

3

$currentPage शीर्ष पर परिभाषित global अंतरिक्ष में रहते हैं नहीं करता है। DrawNumbers फ़ंक्शन के पहले पैरामीटर के रूप में आप $currentPage को क्यों पास नहीं करते हैं?

drawNumbers($currentPage, 1, 1); 

function drawNumbers($currentPage, $from, $to) { 
// no need define $currentPage here since it's passed 
} 
संबंधित मुद्दे