2013-04-29 15 views
6

पर मेरे पास एक फ़ंक्शन है जिसे curPageURL कहा जाता है। मेरे स्थानीय अपाचे पर, मैंने इस तरह के पेज के रिटर्न-वैल्यू का उपयोग किया: $pageUrl = explode('?',curPageURL())[0]; यह बहुत अच्छा काम करता था। लेकिन लाइव पर यह काम नहीं किया। मुझे पता लगाने में काफी समय लगा, कि त्रुटि सरणी तक पहुंच रही थी।php अजीब व्यवहार सरणी

$pageUrl = explode('?',curPageURL()); 
$pageURL = pageURL[0]; 


function curPageURL() { 
     $pageURL = 'http'; 
     if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
     $pageURL .= "://"; 
     if ($_SERVER["SERVER_PORT"] != "80") { 
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
     } else { 
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
     } 
     return $pageURL; 
    } 
  • किसी को भी क्यों की व्याख्या कर सकते:

    यह समस्या हल?

  • क्या यह फ़ंक्शन के वापसी मूल्य से सीधे सरणी अनुक्रमणिका तक पहुंचने के लिए मना किया गया है? यदि हां, तो ने मेरे लोकहोस्ट पर क्यों काम किया, लेकिन मेरे लाइव होस्ट पर नहीं?

+0

यह 5.4 –

+0

हाँ मेरे होस्टर php 5.3 पर है में काम करना चाहिए - यह सब और एक घंटे बर्बाद समय बताते हैं कि:/धन्यवाद – abimelex

उत्तर

4

$pageUrl = explode('?',curPageURL())[0]; ही उपलब्ध जब php संस्करण> = 5,4

पीएचपी 5.4 के रूप में यह एक समारोह या विधि कॉल सीधे का परिणाम भिन्नता सरणी के लिए संभव है। इससे पहले कि यह केवल अस्थायी चर का उपयोग कर संभव था।

आपका ऑनलाइन होस्ट उस संस्करण से नीचे है।

4

आपको current() की आवश्यकता होगी जब तक आपके पास PHP 5.4 है जो array dereferencing on function results का समर्थन करता है।

$pageUrl = current(explode('?',curPageURL())); 
संबंधित मुद्दे